[分割コンパイルの復習]

全文

(1)

15

[分割コンパイルの復習]

cc -c sample.c (sample.oというオブジェクトファイルを生成)

cc -c sub1.c (sub1.o  というオブジェクトファイルを生成)

cc -c sub2.c (sub2.o  というオブジェクトファイルを生成)

cc -o sample sample.o sub1.o sub2.o (sample.o sub1.o sub2.oの3つをリンク

してsampleという実行ファイルを生成)

上の4行は

  cc -o sample sample.c sub1.c sub2.c  と同じ.

ヘッダファイルを修正したときには,

それを include しているファイルすべてを再コンパイルする必要がある.

↓ 覚えるのは大変

make の利用

13.Make

Makefileまたはmakefileというファイルに分割コンパイル時のファイルの依存関係と処

理方法を記述.

部分的な変更があった場合,変更が及ぶ範囲だけを処理する.

ファイル include しているヘッダ sample.c config.h inc1.h inc2.h sub1.c config.h inc1.h

sub2.c config.h inc2.h  makefile の例

---<ここから>---

# 簡単な makefile の例 

all: sample   

sample: sample.o sub1.o sub2.o 

        cc -o sample sample.o sub1.o sub2.o   

sample.o: sample.c config.h inc1.h inc2.h          cc -c sample.c 

 

sub1.o: sub1.c config.h inc1.h          cc -c sub1.c 

 

sub2.o: sub2.c config.h inc2.h          cc -c sub2.c 

---<ここまで>---

トップレベルのターゲット

(2)

16

[書式]

作りたいファイル:必要なファイル と 依存関係

(TAB)ファイルを作るのに必要なコマンド

上のmakefilesample.c sub1.c sub2.c config.h inc1.h inc2.hと同じディレクトリ におき,

  make  と入力すると

cc -c sample.c  cc -c sub1.c  cc -c sub2.c 

cc -o sample sample.o sub1.o sub2.o  が実行される.

このあと

a) sample.cだけを変更したとき,makeと入力すると

cc -c sample.c 

cc -o sample sample.o sub1.o sub2.o 

b) sub1.cだけを変更したとき

cc -c sub1.c 

cc -o sample sample.o sub1.o sub2.o  c) inc2.hだけを変更したとき

cc -c sample.c  cc -c sub2.c 

cc -o sample sample.o sub1.o sub2.o 

d) config.hだけを変更したとき

cc -c sample.c  cc -c sub1.c  cc -c sub2.c 

cc -o sample sample.o sub1.o sub2.o  がそれぞれ実行される.

[補足と参考]

sub1.oだけを生成したいときは

    make sub1.o  と入力すればよい.

• 上のmakefilesample.makeというファイル名で作成したときは     make -f sample.make 

と入力すればよい.

makefileの中では変数が使用可能.

(3)

17

(例)

OBJ = sample.o sub1.o sub2.o  INC = config.h inc1.h inc2.h  LIB = -lm 

 

sample: $(OBJ) 

        cc -o sample $(OBJ) $(LIB)   

sample.o: sample.c $(INC)          cc -c sample.c   

sub1.o: sub1.c config.h inc1.h          cc -c sub1.c 

 

sub2.o: sub2.c config.h inc2.h          cc -c sub2.c 

makeのより高度な利用法については各自で調べて下さい.

演習問題

11. 演習問題10 a)b)をコンパイルするためのmake ファイルの例を示せ.

12. 演習問題10 a)b)で作成した二分法とニュートン法のプログラムを,多項式用に修正

せよ.すなわち,関数を直接プログラムに書くのではなく,次数と係数(および初期 点)を入力すればよい形に改めよ.(例えば,

f ( x ) = 5 x

3

+ x

2

− 4 x + 2

で,初期点を0 とするのであれば,

3 , 5 , 1 , − 4 , 2 , 0

のように入力する.)また,それを用いて,適当な 多項式(少なくとも4次以上で,自明ではない解であること)の解を求めなさい.

演習問題10〜12の解答(ソースファイルおよび実行結果)を,11月11日(月)午後4時

までにシステム事務室へ提出しなさい.

(cc -o sample sample.o sub1.o sub2.o –lmと同じ)

Updating...

参照

Updating...

関連した話題 :