gpt4 book ai didi

c++ - nm 报告的未解析符号

转载 作者:行者123 更新时间:2023-11-28 00:58:32 27 4
gpt4 key购买 nike

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

nm 为 libm 和 libstdc++ 报告的这些符号是有意的吗?请注意,我正在为 QNX 操作系统进行交叉编译。

在此先致谢并致以亲切的问候,

最佳答案

Are these symbols reported by nm for libm and libstdc++ intended?

是的:当您链接到共享 库时,符号仍未解析。它们在运行时 绑定(bind)到共享库中的定义。这就是动态链接到其他库的意思

更新:

i find other unresolved symbols too say for libsocket.so. It looks like this:
U connect@@libsocket.so.2
But the symbol for math libraries is like this:
U pow
Why is this difference even though all these are shared libraries.

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

there is another shared library, to which when i link it shows this symbol:
W _ZN15HWPos15getCCount
Why is there this difference?

这是一个弱定义的符号,而不是一个未解析的符号。您可以阅读有关弱 ELF 符号的信息 here .

关于c++ - nm 报告的未解析符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9884852/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com