long double
Ubuntuのgccにmath.hの -操作関数、つまりsqrtl
、、を理解させるのに苦労しています。コンパイル時にこれらすべてに対して表示されるメッセージは次のとおりですcabsl
。cexpl
undefined reference to `sqrtl'
gcc がこれらの関数を理解するために、コマンド ラインに指定する必要があるフラグは他に何かありますか-lm
? パッケージが不足しているのでしょうか? それとも、使用しているバージョン (Oneiric では 4.6.1) の問題でしょうか?
答え1
問題は、引数がコンパイラに渡される順序にあります。
Oneiricでは、リンクされたライブラリは後ソースファイルの名前:
gcc test.c -lm
この変更とその理由についてはさらに詳しく説明しますここ。
gcc には定数値関数の組み込みバージョンがあるため、この問題は発生しません。そのため、 でコンパイルすると、-fno-builtin
引数に変数がある場合と同じエラーが発生します。
についてありがとうございましたジェイソン・コンティこの情報については。