Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Gcc dlopen-无法打开共享对象文件_Gcc_Shared Libraries_Visibility_Dlopen_Dlsym - Fatal编程技术网

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在找不到某些东西

我正在用gcc编译一个共享库,并使用dlopen加载它。我还将以下内容传递给编译器:

-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_调试,我不知道。