2012-03-27 122 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