希望有人以前见过这个并且可以提供一些见解。
我包括 math.h 和链接 libm,在 FreeBSD 9.2 x86_64 上使用 gcc 4.2.1。
sinl、cosl、tanl 之类的函数可以工作,但是一旦我调用 sinhl 之类的函数,我就会收到有关内置的隐式声明和未定义引用的错误的警告。
相关标题部分:
#include <math.h>
#include <stdlib.h>
// ....
long double function0(long double inValue)
{
// Sine long double == sinl
return sinl(inValue);
}
// ....
long double function3(long double inValue)
{
// Hyperbolic Sine long double == sinhl
return sinhl(inValue);
}
生成文件的东西:
all:
gcc -o test test.c -lm
编译尝试导致:
function_references.h: In function 'function3':
function_references.h:39: warning: incompatible implicit declaration of built-in function 'sinhl'
/tmp//ccSpynxE.o: In function `function3':
test.c:(.text+0x98): undefined reference to `sinhl'
我检查了 math.h 并且 sinl 和 sinhl 都以相同的方式列出。只是为了笑,我尝试链接到 32 位版本的 libm,这让我无处可去。
有趣的是,如果我查看 /usr/include/libm.a 中的符号,我会看到有关 sinl 的内容,但没有看到有关 sinhl 的内容。我是否需要链接其他库才能使用双曲三角函数?
在过去的 24 小时里,我一直在不停地研究这个问题,但没有看到任何明显的东西。我在很多其他函数上也遇到了同样的问题:coshl、tanhl、logl、log2l、log10l、expl。
有什么想法来自全新的眼光吗?
先感谢您。-T