誰かがこれを以前に見たことがあり、洞察を提供できることを願っています。
FreeBSD 9.2 x86_64 で gcc 4.2.1 を使用して、math.h を含めて libm をリンクしています。
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);
}
Makefile スタッフ:
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