gcc で long double 関数を使用する

gcc で long double 関数を使用する

long doubleUbuntuのgccにmath.hの -操作関数、つまりsqrtl、、を理解させるのに苦労しています。コンパイル時にこれらすべてに対して表示されるメッセージは次のとおりですcabslcexpl

undefined reference to `sqrtl'

gcc がこれらの関数を理解するために、コマンド ラインに指定する必要があるフラグは他に何かありますか-lm? パッケージが不足しているのでしょうか? それとも、使用しているバージョン (Oneiric では 4.6.1) の問題でしょうか?

答え1

問題は、引数がコンパイラに渡される順序にあります。

Oneiricでは、リンクされたライブラリはソースファイルの名前:

gcc test.c -lm

この変更とその理由についてはさらに詳しく説明しますここ

gcc には定数値関数の組み込みバージョンがあるため、この問題は発生しません。そのため、 でコンパイルすると、-fno-builtin引数に変数がある場合と同じエラーが発生します。

についてありがとうございましたジェイソン・コンティこの情報については。

関連情報