打印定义给定符号的库的名称
print the name of the library that defines a given symbol
假设您有一个符号的名称(是否有解映射(和一个动态链接到其他符号的库的名称,那么您需要找出哪个库能够解析该符号。
我尝试使用nm
、objdump
和readelf
,但找不到关于它的好文档,看起来用这些工具是不可能的。
gdb
提供了类似的功能,但它是一个调试器,我需要一些快速查找的功能,你知道如何在不启动调试会话的情况下做到这一点吗?
您可以使用ld-linux.so.2
的调试工具在elf对象中查找符号解析(例如amd64,动态加载程序名称反映了这一事实(:
LD_DEBUG=symbols,bindings /lib/ld-linux-x86-64.so.2 /bin/ls
以上内容将根据曲调打印行:
60157: symbol=fclose; lookup in file=/bin/ls [0]
60157: symbol=fclose; lookup in file=/lib64/librt.so.1 [0]
60157: symbol=fclose; lookup in file=/lib64/libcap.so.2 [0]
60157: symbol=fclose; lookup in file=/lib64/libacl.so.1 [0]
60157: symbol=fclose; lookup in file=/lib64/libc.so.6 [0]
60157: binding file /bin/ls [0] to /lib64/libc.so.6 [0]: normal symbol `fclose' [GLIBC_2.2.5]
然后,您可以对输出进行grep以查找所需的任何信息。
您可以在任何elf对象上调用链接器,包括库:
LD_DEBUG=symbols,bindings /lib/ld-linux-x86-64.so.2 /lib/libm.so.6
相关文章:
- vscode g++链路故障:体系结构x86_64的未定义符号
- 在 Mac 上使用 CMAKE 将 FFTW 和 FFTWPP 链接到项目中时未定义的符号
- 在C++中使用内联方法时出现未定义的符号错误
- 引擎节点:未定义的符号:_ZTV6Config
- 为函数定义符号不明确的指针参数
- 未定义的引用,尽管存在符号,但 std::experimental::可选
- 体系结构x86_64的未定义符号:std:terminate(),typeinfo,运算符delete[],运算符new
- Windows 链接器是否使用 LoadLibrary 解析 DLL 中未定义的符号?
- C++ 中 dlsym 的未定义符号
- MacOS 上的 Xcode 11 项目不在一个函数中使用 sin 和 cos:未定义的符号"___sincosf_stret"
- 仅在 MacOS 上析构函数的未定义符号
- 重复符号 --- 定义和声明之间的差异
- 符号定义多次
- C++部分模板专用化和多符号定义错误
- 使用Visual Studio 2015时有多个符号定义
- CMake和Dylib:符号定义
- g++说引用是未定义的,即使' nm '列出了我的目标文件中的符号定义
- 为什么't my include保护防止递归包含和多个符号定义
- 多个符号定义,但我只定义我的符号一次
- 用c++科学和工程符号定义Flex实类型