gccに関連付けるときの数学関数への未定義参照

gccに関連付けるときの数学関数への未定義参照

makeインストーラを使用するとエラーが発生します。エラーのために失敗したステップ全体は次のとおりです。

gcc  -g -O2 -fopenmp -L/usr/lib -lcfitsio -lm  -o lenstool_tab e_nfwg.o lenstool_tab.o midpnt.o nrutil.o polint.o qromo.o read_bin.o lenstool_tab.o: In function `main':
/usr/local/src/lenstool-6.8/table_src/lenstool_tab.c:73: undefined reference to `log'
/usr/local/src/lenstool-6.8/table_src/lenstool_tab.c:73: undefined reference to `log'
e_nfwg.o: In function `surfdens2':
/usr/local/src/lenstool-6.8/table_src/e_nfwg.c:133: undefined reference to `pow'
/usr/local/src/lenstool-6.8/table_src/e_nfwg.c:130: undefined reference to `sin'
/usr/local/src/lenstool-6.8/table_src/e_nfwg.c:138: undefined reference to `pow'
/usr/local/src/lenstool-6.8/table_src/e_nfwg.c:140: undefined reference to `sin'
/usr/local/src/lenstool-6.8/table_src/e_nfwg.c:140: undefined reference to `pow'
/usr/local/src/lenstool-6.8/table_src/e_nfwg.c:144: undefined reference to `sin'
/usr/local/src/lenstool-6.8/table_src/e_nfwg.c:144: undefined reference to `pow'
e_nfwg.o: In function `nfwg_kappa':
/usr/local/src/lenstool-6.8/table_src/e_nfwg.c:63: undefined reference to `pow'
e_nfwg.o: In function `scmass':
/usr/local/src/lenstool-6.8/table_src/e_nfwg.c:165: undefined reference to `pow'
collect2: error: ld returned 1 exit status
make[1]: *** [lenstool_tab] Error 1
make[1]: Leaving directory `/usr/local/src/lenstool-6.8/table_src'
make: *** [all-recursive] Error 1

明らかに、数学ライブラリにリンクするのに問題があります。コードに#include<math.h>。適切に見えるmakefileのさまざまな部分に内容を追加しましたが、役に立ちません-lm-lmメイクファイルを含めましたここそれが役立つなら。この問題を解決するには、makefileを修正する必要がありますか?この問題についてWebを検索しましたが、makefileを考慮した回答がないようです。別のスレッドでconfig.statusをincludeに変更するように提案を読んでい-lmますが、それを行う場所はわかりません。以前は問題なくこのプログラムをMacにインストールしていましたが、今はUbuntu 14を使用していますが、このエラーが発生します。どんな助けでも大変感謝します!ありがとうございます。

答え1

リンクするライブラリーを指定する必要があります。後ろに彼らへの言及があります。したがって、コマンドを次のように変更します。

gcc  -g -O2 -fopenmp -L/usr/lib  -o lenstool_tab e_nfwg.o lenstool_tab.o midpnt.o nrutil.o polint.o qromo.o read_bin.o lenstool_tab.o -lcfitsio -lm

これにより問題が解決します。後でライブラリを指定するために、Makefileで問題を解決できます。

関連情報