2012-10-15 86 views
1

我想編譯提供給我的程序。我在Makefile注意到它運行的命令pthread庫包含在(鏈接?)步驟

g++ -o test [...] -lpthread 

我注意到pthread庫文件是/lib/libpthread.so.0,但是當我試圖讓目標,它給了我這個錯誤:

/usr/bin/ld: cannot find -lpthread 
collect2: ld returned 1 exit status 

我該如何解決這個問題?

+0

可能不會解決您的問題,但您應該使用'-pthread'而不是'-lpthread'。 – Mat

+0

'-Wl, - verbose'選項會告訴你GCC在哪裏尋找庫,這可能會幫助你找出爲什麼它找不到它。有關更多詳細信息,請參閱http://stackoverflow.com/a/11481258/12711。 –

回答

-1

爲了使用-lpthread,您需要一個libpthread.a庫存檔,這是用於靜態鏈接的。 libpthread.so.0是一個共享對象,意味着它用於動態鏈接。請參閱GCC Link Options

+0

'-l'也用於動態鏈接。你的解釋是不正確的。 – Mat

+0

好的。不知道gcc現在已經足夠聰明,可以嘗試許多變種的文件'liblibname.a','liblibname.so','libname.a',...用於鏈接選項'-llibname' –

+0

事實就是這樣幾乎永遠。這不是什麼新鮮事。 – Mat