2012-11-08 92 views
0

我正在寫一個處理線程的程序,我幾乎完全工作。不幸的是,我遇到了一個我不熟悉的語法錯誤(重複4次)。這裏有一個快速剪斷,它在我的編譯的命令,並且錯誤後面:
不熟悉的錯誤

gcc -o threads threads.cpp -pthread<br> 
/tmp/ccy8maS0.o: In function `tenPercentA()': 
threads.cpp:(.text+0xde): undefined reference to `ceil' 
/tmp/ccy8maS0.o: In function `tenPercentB()': 
threads.cpp:(.text+0x1c6): undefined reference to `ceil' 
/tmp/ccy8maS0.o: In function `fiftPercentC()': 
threads.cpp:(.text+0x2ae): undefined reference to `ceil' 
/tmp/ccy8maS0.o: In function `fiftPercentD()': 
threads.cpp:(.text+0x396): undefined reference to `ceil' 
/tmp/ccy8maS0.o:(.eh_frame+0x12): undefined reference to `__gxx_personality_v0' 
collect2: ld returned 1 exit status 

我已經包含在我的程序文件math.h庫,和我使用的是正確的語法呼叫:

ceil(tempA); 

其中tempA是一個double值,我需要向上取整。 有什麼建議嗎?我試過谷歌這些錯誤,但像大多數錯誤一樣,很難找到與您的模式相同的具體示例。

編輯:我已經解決了所有與ceil相關的錯誤(在命令行上使用-lm),但最後一個錯誤依然存在,我不知道它是什麼意思,或者如何解決它。

回答

3

參考未定義參考ceil()

你似乎缺少打擊libm鏈接。

添加選項-lm到你的電話gcc應該解決這個問題。


#include荷蘭國際集團math.h是編譯器來了解ceil()的確定指標。然後,鏈接器需要知道ceil()的實現實際所在的位置,即libm

+0

是的,只是想出了!謝謝:) 我也想出了導致最後一個錯誤的原因,AKA用gcc和g ++編譯(我把文件保存在錯誤的擴展名中) – Baelix