2011-11-25 25 views
6

我在系統中安裝了Ubuntu 11。我有一個使用pthread庫的c程序。 即使我編譯了國旗-lpthread,我也會得到錯誤Undefined reference to sem_wait()gcc -lpthread無法正常工作

例如:

gcc -lpthread prog.c 

該方案適用於其他的Ubuntu安裝的罰款。

+1

你可以嘗試用pthread調用編譯別的東西嗎? – DanZimm

+1

鏈接順序很重要。圖書館只能到最後。 –

回答

12

嘗試:

gcc -pthread 

,而不是-lpthread。我相信這種差異是顯着的。後者是鏈接到libpthread,前者是鏈接反對libpthread和一堆其他的東西呢!

sem_wait是librt的一部分,所以你可以使用gcc -lrt,但-pthread爲你做了這些(以及其他所有的事情!)。

+0

謝謝!這工作正常。 –