GCC错误:未定义的引用

时间:2013-06-19 21:59:30

标签: c linker beagleboard math.h

我正在尝试在beagleboard xm上编译一些C代码。我尝试编译,但我得到错误:未定义的引用'isfinite',它在math.h库中。这段代码在我的所有其他计算机中完美编译,我在makefile中包含-lm。

我怀疑它可能是我的编译器,也许它是一个过度的版本?在beagleboard上它是版本4.3.3,但在我的电脑上是4.7.3,但我不知道如何获得更高版本。我认为opkg会自动获得最新版本。

为什么会发生这种情况的任何想法?

2 个答案:

答案 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);