首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >nm报告的未解析符号

nm报告的未解析符号
EN

Stack Overflow用户
提问于 2012-03-27 15:09:09
回答 1查看 902关注 0票数 0

我正在编译我的代码以创建一个共享库,并最终将它们链接到正确的库(共享库)。然而,当我使用"nm -u“查看我的共享库时,它显示了未解析的符号,主要来自(libm.so和libstdc++.so)。我已经用-Wl,--no--undefined- -Wl,--no-undefined-version标志编译了它,但在链接期间它不会报告任何东西。

这些符号是由nm为libm和libstdc++报告的吗?请注意,我正在为QNX OS交叉编译。

提前感谢并致以亲切的问候,

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-28 11:07:46

这些符号是由nm为libm和libstdc++报告的吗?

是:当您链接到共享库时,符号将保持未解析状态。它们在运行时绑定到共享库中的定义。这就是动态链接其他库的意义所在。

更新:

对于libsocket.so,我也发现了其他未解析的符号。它看起来是这样的:

U connect@@libsocket.so.2

但是数学库的符号是这样的:

U pow

尽管所有这些都是共享库,但为什么会有这种差异。

这是因为libsocket中的connect是版本化符号,而libm中的pow不是。您可以阅读有关版本化符号here的内容。

还有另一个共享库,当我链接到该库时,它会显示以下符号:

W _ZN15HWPos15getCCount

为什么会有这样的差异呢?

这是一个定义不明确的符号,而不是一个未解析的符号。你可以读到关于弱ELF符号的here

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9884852

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档