Gcc dlopen-无法打开共享对象文件
我正在用gcc编译一个共享库,并使用dlopen加载它。我还将以下内容传递给编译器:Gcc dlopen-无法打开共享对象文件,gcc,shared-libraries,visibility,dlopen,dlsym,Gcc,Shared Libraries,Visibility,Dlopen,Dlsym,我正在用gcc编译一个共享库,并使用dlopen加载它。我还将以下内容传递给编译器: -fvisibility=hidden 当我在没有可见性标志的情况下编译库时,一切都可以完美地工作。但是,当我使用该标志编译时,dlopen会出现以下错误: libtest.so: cannot open shared object file: No such file or directory linbrary.so文件存在!这对我来说似乎很奇怪,因为如果一些符号被隐藏了,我希望dlsym在找不到某些东西
-fvisibility=hidden
当我在没有可见性标志的情况下编译库时,一切都可以完美地工作。但是,当我使用该标志编译时,dlopen会出现以下错误:
libtest.so: cannot open shared object file: No such file or directory
linbrary.so文件存在!这对我来说似乎很奇怪,因为如果一些符号被隐藏了,我希望dlsym在找不到某些东西时会失败。但是,在加载库(又称dlopen)时,此操作已经失败
我还尝试添加
__attribute__ ((visibility ("default")))
对于我后来调用的函数(extern“C”),没有任何成功。有人知道我能做些什么吗?或者,有没有办法对此进行调试以找出dlopen失败的原因?我不想删除可见性标志,因为它大大减少了我的可执行文件大小。我的库依赖于另一个找不到的库
您可以使用查看所有依赖项的列表,包括缺少的依赖项
ldd libtest.so
您能否使用
LD_DEBUG=all
运行并报告您的发现?谢谢。我的共享库依赖于另一个找不到的库。谢谢你的LD_调试,我不知道。