I'm trying to test some of the functions in fenv.h
, however, when I compile the below function ld fails with undefined reference to 'feclearexcept'
and undefined reference to 'fetestexcept'
. I'm running hardened gentoo compiled against uclibc, and I suspect that this is at least somewhat related
#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
is in /usr/include
. There are static and dynamic libraries (libm.a
, libm.so
) in /usr/lib
. I am compiling with gcc -o test test.c -lm
; does anyone have any ideas why the linker can't find the relevant functions. It seems like nothing in fenv.h
has a corresponding library.
UPDATE: this decade old blog post seems to suggest that fenv is not supported by uclibc. I cannot determine if this is the case still, but if it were is there anything to be done. http://uclibc.10924.n7.nabble.com/missing-fenv-h-for-qemu-td2703.html
sqrt()
? – Canaigre