e023199@cc1> gcc 4-2.cを実行して, 出て来るメッセージを確認してください. 私の環境では, 次のようになりました.
gcc 4-2.c Undefined first referenced symbol in file sqrt 4-2.o ld: fatal: Symbol referencing errors. No output written to a.outエラーメッセージは, 上のような表形式ででます. 1-2 行目は, 左側に未定義シンボルと書いてあって, 右側に 最初に参照されたファイルと書いてあります. 単に翻訳しただけですが, この程度の翻訳はできるのが, 大学生の常識です. 3 行目は, 上の物の内容で, 未定義シンボルが sqrt, 参照されたファイルが, 4-2.o という意味です. 4 行目の先頭は, このメッセージを出したコマンドで ld(link editor リンカ)でその後に書いてあるような事を言っています. (さて, なんて書いてあるのでしょう ?)
これは, ld がプログラム a.out を作り上げる際に sqrt という 関数がどこにも無かったので, 最後まで実行できなかったため 出て来たエラーメッセージです. UNIX の cc(ld) は, デフォルトでは 標準 C ライブラリ /usr/lib/libc.a(/usr/lib/libc.so) にある関数しか, ライブラリをリンクしません. sqrt は数学関数ライブラリにありますから, このような事が起こります. 標準ライブラリ以外のライブラリにある関数をリンクするには, オプション -l を cc に加えてコンパイルします. ちなみに, 数学関数ライブラリは, /usr/lib/libm.a(/usr/lib/libm.so) ですが, これをリンクするには 次のようにコマンドを打ちます.
e023199@cc1> gcc 4-2.c -lm-l の後の文字 m の 意味 は上のファイルから類推できるでしょう. 他のライブラリをリンクする時も, 同様の規則で -l の後の アルファベットを指定します.