2014-09-04 92 views
1

我的c應用程序鏈接.so庫。但應用說.so:未定義引用'min'

library.so:未定義的引用 '分鐘'

我的編譯器指令,如:

的gcc -o test.o library.so -ldl - lpthread -lm

有沒有解決方法?請幫我

+0

如果你能得到你的代碼進行編譯,但是當你試圖執行代碼,那麼你的應用程序就不能在運行時找到你已經鏈接到的庫。這可以通過兩種方式解決。您可以通過配置/etc/ld.so.conf添加您放置在/etc/ld.so.conf.d/中的信息來將庫的位置添加到庫緩存。或者,您可以使用'rpath'信息在可執行文件頭中包含庫的位置。 – 2014-09-04 05:23:21

+0

在這種情況下,找到該庫,但該庫包含一個不存在的符號('min')。要麼修復庫鏈接到可以找到min的位置(或者實現函數),要麼如果這是不可能的,請自行提供min()(或者鏈接它存在的庫,如果有的話)。 – perh 2014-09-04 09:18:18

回答

3

你需要傳遞-library與gcc而不是library.so,還提供library.so位置

gcc -L/path/to/library.so -o test.o -llibrary -ldl -lpthread -lm 
+5

我認爲它是'-lrary'而不是'-llibrary'! – Sathish 2014-09-04 05:46:31