我的可执行文件引用了 dlcose - 但在哪里?

My executable has references to dlcose - but wherefor?

提问人:einpoklum 提问时间:8/9/2022 最后编辑:einpoklum 更新时间:8/9/2022 访问量:51

问:

我正在尝试链接一些从 C++ 源文件构建的可执行文件,并得到:

/usr/bin/ld: examples/CMakeFiles/whatever/main.cpp.o: undefined reference to symbol 'dlclose@@GLIBC_2.2.5'

现在,我知道如何“修复”这个问题:

如何修复 glad.c 中对符号“dlclose@@GLIBC_2.2.5”的未定义引用

但是 - 我不明白这种依赖性是从哪里来的。我没有dlopen'ing或dlclose'我所知道的任何东西,我也想不出我的依赖库之一这样做(尽管我不能确定)。

我如何调查此要求的起源,以找出“谁应该受到责备”?libdl

笔记:

  • 我可以通过CMake控制构建过程。
  • 我可以访问源文件(但不能访问依赖库的源文件 - 只能访问它们的标头)。
C++ Linux 反向工程 未定义引用 dlclose

评论

0赞 Stephen Newell 8/9/2022
在依赖项上使用,直到在输出中找到?lddlibdl
0赞 einpoklum 8/9/2022
@StephenNewell:ldd 用于可执行文件,而不是用于 OR 文件...还是我错了?编辑:看来我错了。 文件似乎可用于 LDD。.o.a.so
0赞 Stephen Newell 8/9/2022
好点子,我以为你是针对 s 的链接。 为。sogrepdlclose
0赞 Stephen Newell 8/9/2022
您的构建输出显示 ,因此我假设您已经检查了但没有成功。main.cpp.omain.cpp
1赞 Stephen Newell 8/9/2022
您是否有权访问源文件?如果调用位于内联函数中,则可以运行预处理器。

答: 暂无答案