我正在尝试在beagleboard xm上编译一些C代码。我尝试编译,但我得到错误:未定义的引用'isfinite',它在math.h库中。这段代码在我的所有其他计算机中完美编译,我在makefile中包含-lm。
我怀疑它可能是我的编译器,也许它是一个过度的版本?在beagleboard上它是版本4.3.3,但在我的电脑上是4.7.3,但我不知道如何获得更高版本。我认为opkg会自动获得最新版本。
为什么会发生这种情况的任何想法?
答案 0 :(得分:1)
函数infinite()
是C99的一部分。默认情况下,您的编译器使用旧版本的C语言。您需要使用标志-std=c99
进行编译才能启用此宏。
`gnu89' GNU方言的ISO C90(包括一些C99功能)。这是 C代码的默认值。
http://gcc.gnu.org/onlinedocs/gcc-4.3.3/gcc/C-Dialect-Options.html
答案 1 :(得分:0)
isfinite
是C ++ 11标准的一部分,而gcc 4.3.3很早就知道了。尝试
int finite(double x);
或int finitef(float x);
。