2013-06-19 62 views
0

我想編譯beagleboard xm上的一些C代碼。我嘗試編譯,但是我得到錯誤:未定義對math.h庫中的'isfinite'的引用。這段代碼完全在我所有的其他計算機上編譯,並且在我的makefile中包含-lm。GCC錯誤:未定義的參考

我懷疑它可能是我的編譯器,也許它是一個超版本?在Beagleboard上它的版本是4.3.3,但在我的電腦上是4.7.3,但我不知道如何獲得更高版本。我認爲opkg會自動獲得最新版本。

任何想法,爲什麼會發生這種情況?

+1

是否'-lm'對象文件後會出現?如果不是的話,修復一下事情。如果它出現在目標文件之前,鏈接程序將忽略該庫(它不提供掃描庫時需要的任何符號),然後它將讀取目標文件,然後它將不會找到符號在主C庫中。 –

回答

0

isfinite是C++ 11標準的一部分,gcc 4.3.3是老的要知道的。試試 ​​或int finitef(float x);

+1

@tomato問題是關於C而不是C++。 – 2013-06-19 22:04:07

+1

它是C99的一部分,作爲一個宏,在C++中它是一個函數:http://www.cplusplus.com/reference/cmath/isfinite/ – Aloys