在 gcc 中使用长双精度函数

在 gcc 中使用长双精度函数

我很难让 Ubuntu 的 gcc 理解long doublemath.h 中的 -manipulating 函数,即sqrtlcabslcexpl我在编译时收到的所有消息都是

undefined reference to `sqrtl'

除了-lm命令行上必须添加的标志之外,是否还有其他标志,以便 gcc 能够理解这些函数?是缺少软件包吗?还是我使用的版本有问题(Oneiric 上的版本为 4.6.1)?

答案1

问题在于参数传递给编译器的顺序。

在 Oneiric 上,必须调用链接库源文件的名称:

gcc test.c -lm

这一变化及其原因有更详细的描述这里

对于常量值的函数,不会出现此问题,因为 gcc 有内置版本。因此,使用 进行编译时,会-fno-builtin出现与参数中有变量时相同的错误。

感谢杰森·康蒂获取此信息。

相关内容