2012-08-14 39 views
5

在動態鏈接期間出現了一個奇怪的未定義函數引用。我知道應該包含這個函數的庫的名稱。是否有任何Linux命令來確保該函數已存在於庫(.a文件)中?在linux中檢查庫中函數的存在

+2

嘗試'nm ',如果您的符號以't'或'T'爲前綴,則lib具有它。 – Rohan 2012-08-14 07:54:57

+0

[autoconf](http://www.gnu.org/software/autoconf/)在使用['AC_CHECK_LIB']檢查庫可用性時執行此操作(http://www.gnu.org/software/autoconf/manual /autoconf.html#Libraries)函數。 – 2012-08-14 07:58:26

回答

9

您應該能夠使用nm(可能需要--demangle參數)得到一切的是圖書館內部列表,然後使用grep過濾結果,例如尋找\d T functionname\(或類似的東西。

+0

函數庫的前綴爲T,但函數名稱並不完全符合我的預期。 nm找到: '0000000000000310 T _Z15lmp_init_deviceiiiiiiii' 而我正在尋找lmp_init_device。 鏈接期間會忽略前綴/後綴嗎? – ahmad 2012-08-14 08:26:38

+1

添加'--demangle',它應該刪除添加的字符(由於它是C++而不是普通的C)。 – Mario 2012-08-14 08:32:53

1

,看一下nm命令,它應該給你的資料片你正在尋找

相關問題