我想從http://pages.cs.wisc.edu/~travitch/pthreads_primer.html(互斥部分)編譯樣品並行線程的代碼。當我運行此命令:未定義參考`褐色」,但math.h中已被列入
gcc -pedantic -Wall -o theaded_program pth.c -lpthread
這是在鏈接說明,我得到這個錯誤
pth.c:45:5: warning: ISO C90 forbids mixed declarations and code [-pedantic]
/tmp/ccajksBv.o: In function `opponent':
pth.c:(.text+0x4a): undefined reference to `tan'
/tmp/ccajksBv.o: In function `main':
pth.c:(.text+0x131): undefined reference to `tan'
collect2: ld returned 1 exit status
然而#include <math.h>
有代碼!海灣合作委員會的版本是4.6
至於爲什麼它的需要,請參閱[這](http://stackoverflow.com/a/4606406/1919302):) – amrith92 2013-04-04 11:50:25
只給這一些額外的信息:用「-lm」連接數學庫(用文字「 - 連接數學」)。在這種情況下包含math.h是不夠的。 – puelo 2013-04-04 11:51:54
爲了完整性,您應該在調用gcc時添加「-lm」,但在命令末尾加上*,或者至少在編譯單元的右側。這是鏈接器期望按照依賴性順序查找對象和庫的原因:首先(左)用戶(編譯單元)和後來(右)提供者(庫)。例如,嘗試將「lpthread」移動到您的來電GCC的左端,你會發現,GCC將不能夠解決您的POSIX線程調用。最好的問候,/Ángel – Angel 2016-10-30 07:10:02