0

私は、ほとんど完全に機能しているスレッドを扱うプログラムを書いています。残念ながら、よく知らない構文のエラー (4 回繰り返されます) が発生しています。これは、私のコンパイル コマンドとそれに続くエラーの簡単な抜粋です。

 gcc -o threads threads.cpp -pthread<br>
/tmp/ccy8maS0.o: In function `tenPercentA()':
threads.cpp:(.text+0xde): undefined reference to `ceil'
/tmp/ccy8maS0.o: In function `tenPercentB()':
threads.cpp:(.text+0x1c6): undefined reference to `ceil'
/tmp/ccy8maS0.o: In function `fiftPercentC()':
threads.cpp:(.text+0x2ae): undefined reference to `ceil'
/tmp/ccy8maS0.o: In function `fiftPercentD()':
threads.cpp:(.text+0x396): undefined reference to `ceil'
/tmp/ccy8maS0.o:(.eh_frame+0x12): undefined reference to `__gxx_personality_v0'
collect2: ld returned 1 exit status

私のプログラムにはすでに math.h ライブラリが含まれており、呼び出しには正しい構文を使用しています。

ceil(tempA);

tempA は、切り上げが必要な値を保持する double です。助言がありますか?これらのエラーを Google で検索してみましたが、ほとんどのエラーと同様に、あなたのものと同じパターンの特定の例を見つけるのは困難です。

編集: ceil 関連のエラーはすべて解決しましたが (コマンド ラインで -lm を使用)、最後のエラーがまだ残っており、その意味や修正方法がわかりません。

4

1 に答える 1

3

への未定義参照の参照ceil():

へのリンクが不足しているようですlibm

-lmへの呼び出しにオプションを追加すると、gccこの問題が解決するはずです。


#includeingmath.hは、コンパイラが の定義を知るためceil()のものです。その後、リンカはceil()の実装が実際に存在する場所、つまりを知る必要がありますlibm

于 2012-11-08T17:41:51.927 に答える