[Q]
gcc (cc) で、sqrt 関数を使ったプログラムをコンパイルしたいのですが

[A]
% cc hoge.c -o hoge -lm
の様に、-lm をつけてコンパイルして下さい。

[Appendix]
nm コマンドを grep と組み合わせて以下のように使うと
% nm -o /lib/lib*.{a,so.*} /usr/lib/lib*.{a,so.*} | grep -w sqrt | grep T
/usr/lib/libvga.so.1: no symbols
/usr/lib/libvga.so.1.2.10: no symbols
/usr/lib/libvgagl.so.1: no symbols
/usr/lib/libvgagl.so.1.2.10: no symbols
/lib/libm.so.5:000056b0 T sqrt
/lib/libm.so.5.0.6:000056b0 T sqrt
/usr/lib/libBLT.a:bltGrLine.o:         U sqrt
/usr/lib/libg++.a:sqrt.o:00000000 T sqrt__Fl
/usr/lib/libm.a:sqrt.o:00000000 T sqrt
/usr/lib/libBLT.so.1.9:         U sqrt
となり、libm で定義(T)されているので、-lm をつければよい、 ということが分かるそうです。

# 伊藤さん、ありがとうございます。m(_ _)m



戻る