我想测试 fenv.h
的一些函数,但是当我编译下面的函数时,ld 失败并出现 undefined reference to 'feclearexcept'
和 undefined reference to 'fetestexcept'
。我在硬化的 Gentoo 上编译了 uclibc,并且我认为这至少与此有些相关。
#include <stdio.h> /* printf */
#include <math.h> /* sqrt */
#include <fenv.h>
#pragma STDC FENV_ACCESS on
int main ()
{
feclearexcept (FE_ALL_EXCEPT);
sqrt(-1);
if (fetestexcept(FE_INVALID)) printf ("sqrt(-1) raises FE_INVALID\n");
return 0;
}
fenv.h
位于/usr/include
。在/usr/lib
中有静态库和动态库(libm.a
, libm.so
)。我用gcc -o test test.c -lm
进行编译;是否有人知道为什么链接器找不到相关函数呢?似乎fenv.h
中没有相应的库。
更新:这篇十年前的博客文章似乎表明uclibc不支持fenv。我无法确定现在是否仍然如此,但如果确实如此,是否有任何解决办法。 http://uclibc.10924.n7.nabble.com/missing-fenv-h-for-qemu-td2703.html
sqrt()
吗? - user12205