2016-09-24 89 views
1

我正在爲我的庫指定一個-l標誌,所以任何人都可以幫助我理解爲什麼我收到此命令的此錯誤?gcc鏈接器錯誤,儘管爲libusb-1.0指定了-l標誌

$ gcc `pkg-config --libs --cflags libusb-1.0` sourcefile.c 
/tmp/cclBFhzY.o: In function `main': 
sourcefile.c:(.text+0x57): undefined reference to `libusb_init' 

pkg-config --libs --cflags libusb-1.0評估爲-I/usr/include/libusb-1.0 -lusb-1.0。)

我已經驗證libusb_init在庫中存在

$ nm /usr/lib/x86_64-linux-gnu/libusb-1.0.a | grep libusb_init 
0000000000001a60 T libusb_init 

我還甚至試圖用-L選項我gcc命令:

gcc -I/usr/include/libusb-1.0 -L/usr/lib/x86_64-linux-gnu -lusb-1.0 sourcefile.c 

我仍然收到鏈接錯誤。你看到我做錯了什麼嗎?

(我讀過未定義引用錯誤幾個其他線程,但答案都得到了明顯的答案:在你的gcc命令指定庫)。

奇怪的是,我不能告訴如果gcc正在處理我的選項。當我與-v標誌運行它,兩個顯着線路有:

LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/5/:/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/5/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/5/../../../:/lib/:/usr/lib/ 

......這還不包括我-L指定的目錄。 (但現在看來,在路徑中的第一項是等同於我的目錄)和:

COLLECT_GCC_OPTIONS='-v' '-I' '/usr/include/libusb-1.0' '-L/usr/lib/x86_64-linux-gnu' '-mtune=generic' '-march=x86-64' 

......這還不包括我-l選項。 (也許這不是一個有效的問題,因爲下一行確實包括-l選項。)有什麼想法?

運行Ubuntu 16

回答