2012-03-27 119 views
0

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

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

在此先感谢和亲切的问候,

回答

3

难道这些符号由纳米报道的libm和libstdC++打算?

是的:当你链接到共享图书馆,符号保持悬而未决。他们被绑定到共享库中的定义运行时。这就是意味着动态链接到其他库。

更新:

我发现其他尚未解决的符号太说了libsocket.so。它看起来像这样:
U [email protected]@libsocket.so.2
但对数学库的标志是这样的:
U pow
为什么这种差异即使所有这些都是共享库。

这是因为在connectlibsocket一个版本符号,但在powlibm没有。你可以阅读有关版本符号here

还有另外一个共享库,当我连接,它显示了这个符号:
W _ZN15HWPos15getCCount
为什么会有这种差异?

这是一个微弱定义的符号,而不是一个未解决的符号。你可以阅读弱ELF符号here

+0

谢谢你的回复...... :)。虽然这确实给我带来了一个问题,我发现其他未解决的符号也对libsocket.so说。它看起来像这样:“U连接@@ libsocket.so.2”但是数学库的符号是这样的:“U pow”。即使所有这些都是共享库,为什么这种差异。 – Nitin 2012-03-28 07:35:31

+0

另外还有另一个共享库,当我链接它时显示这个符号:“W _ZN15HWPos15getCCount”。为什么会有这种差异? – Nitin 2012-03-28 07:37:01

+0

感谢您的回复:) – Nitin 2012-03-30 04:53:09