全体をリンクしてみましょう. * ソースプログラムと単体テストだけでは見つからなかったミスを発見できます. * 未完成な部品でも,リンクだけはできるようにプログラミングしてください. * インタフェースの思い違いが出てくるかもしれません. リンクできるようになったらテストランしてみましょう. * 全体を通して実行できるようにしましょう. * 部品を完成させるのが難しい場合,取り合えず版でも良いのでまずは組み込んでみましょう. * あるは,総合テストを作ってみましょう. !!! リンク時のエラー例 関数や変数の未定義,多重定義などのエラーの例が[repos:devel/ld-errors|https://svn.cis.iwate-u.ac.jp/svn/csd/devel/ld-errors/]にあります. 8< cd 適切なディレクトリ svn co https://svn.cis.iwate-u.ac.jp/csd/devl/ld-errors cd ld-errors make >8 リンク時にエラーが起こりますので,確認してみましょう. !! リンクとは? * コンパイルが通ったオブジェクトプログラムを集め, * 必要なライブラリ中の関数を集めて, * 実行可能なプログラムにする '''オブジェクトファイル中の基本情報''' * 変数 ** 名前,サイズ,初期値 * 関数 ** 名前,サイズ,関数の中身 '''型やパラメータの個数チェックはコンパイル時に行われ,リンク時には行れない'''ので注意. * コンパイル時は,.h と .c に書かれていることに従い,その整合性を検査する * コンパイル時は,.c 間の整合性は検査できない * リンク時は,.o 間の変数と関数の参照定義を行う. ** 複数あるとか, ** 定義されていないとか, ** 大きさが違うとか,(異なる .h をつかってオブジェクトを作った場合など)