我有一个作为OpenSSL引擎的自定义共享对象文件,它可以很好地处理p线程。我试图使用第三方线程库,而不是使用线程。但是,在链接和运行引擎时,我得到了一个分段错误。我只是不知道为什么。我预感到我与新构建的动态库的链接是不正确的,
以下是我所做的
Makefile
CC = GCC CFLAGS = -Wall -fPIC -g -O3 -MD LDFLAGS = -shared OBJ =uTER.o all: libuthread.so libuthread.so:$(OBJ) $(LD) -shared -o $(@) -shared -o $(OBJ) clean: rm -f *.o *d libuthread.so -include *.d %.o:%.c $(CC) $-o $@ -c $< (libuthread.so库复制到/lib/x86_64-linux-gnu/$ldd rsaEngine.so显示以下内容:
linux-vdso.so.1 (0x00007ffded367000) libcryp.so.1.1 => / => /opt/openssl/lib/libcryp.so.so.1.1 (0x00007f895c5fa000) libuthread.so => /lib/x86_64 -linux-gnu/libuten.so (0x00007f895c3f4000) libc.so.6 => //x86_64-linux-gnu/libc.so.6(0x0000007f895c02a000)libdso.2 => /lib/x86_64-linux-gnu/libdl.so.2 ( => /x86_64-linux/ libdl.so.2 )-linux-gnu/libpthread.so.0 (0x00007f895bc09000) /ld 64/ld-linux-x86-64.so.2 (0x00007f895cd56000)我使用gdb来找出导致segmentation fault的原因,并且我发现uthread_join()在某个时候失败了。有人能告诉我我做错了什么吗?
注:我用一个简单的程序检查了图书馆,图书馆工作得很好。
发布于 2022-04-13 01:56:02
我只是不知道为什么。
可能有以下几个原因:
uthread.o崩溃,不管它是什么),uthread.o中的一个错误,它是由您的测试而不是通过您尝试过的简单程序暴露出来的,我们无法用所提供的信息来判断。
您的第一步应该是在调试器下运行程序,找出它崩溃的位置,然后找出原因。
我预感到我与新构建的动态库的链接是不正确的。
我有预感你的预感是错的。你的链接似乎没有什么问题。
https://stackoverflow.com/questions/71849654
复制相似问题