nm报告的未解析符号
unresolved symbols reported by nm
我正在编译我的代码以创建一个共享库,并最终将它们链接到正确的库(共享库)。然而,当我用"nm-u"查看共享库时,它显示了未解析的符号,主要来自(libm.so和libstdc++.so)。
这些符号是由nm为libm和libstdc++报告的吗?请注意,我正在为QNX操作系统进行交叉编译。
提前感谢并致以良好的问候,
这些符号是由nm为libm和libstdc++报告的吗?
是:当您链接到共享库时,符号将保持未解析状态。它们在运行时绑定到共享库中的定义。这就是相对于其他库动态链接的意思。
更新:
我发现其他未解析的符号也适用于libsocket.so。它看起来像这样:
U connect@@libsocket.so.2
但数学库的符号是这样的:U pow
尽管所有这些都是共享库,但为什么会有这种差异呢。
这是因为libsocket
中的connect
是版本化符号,而libm
中的pow
不是。您可以在此处阅读有关版本符号的信息。
还有另一个共享库,当我链接到它时,它会显示以下符号:
W _ZN15HWPos15getCCount
为什么会有这种区别?
这是一个定义较弱的符号,而不是一个未解析的符号。你可以在这里阅读弱ELF符号。
相关文章:
- 在C++中,将大的无符号浮点数四舍五入为整数的最佳方法是什么
- 有符号的int和int-有没有一种方法可以在C++中区分它们
- Android NDK传感器向事件队列报告奇怪的间隔
- 如何在 C 中正确使用 libiconv 使其不会报告"Arg list too long"?
- 将无符号char*转换为std::istream*C++
- 如何在C++中将一个无符号的 int 转换为两个无符号的短裤?
- vscode g++链路故障:体系结构x86_64的未定义符号
- 使用std::source_location报告错误的最佳实践
- 从矢量<无符号字符>转换为字符* 包括垃圾数据
- 为什么链接器报告全局函数的乘法定义符号,而不是类静态方法
- 即使存在NM报告符号,在运行时的符号查找错误也是如此
- iOS崩溃报告象征无DSYM-二进制中看到的地址之外的符号地址
- LD 报告对 nm 找到的符号的未定义引用
- nm报告的未解析符号
- 如何使GCC报告未声明符号的每次出现
- 如何让gcc报告一个未定义的、未使用的外部符号的错误
- 为什么 gcc 不报告以下重复符号的错误?
- c++程序报告符号未找到错误
- GCC报告基于版本库的未引用符号
- 未找到 dyld 符号,但 nm 报告其他情况(OS X 更新问题)