• 検索結果がありません。

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

N/A
N/A
Protected

Academic year: 2021

シェア "[分割コンパイルの復習]"

Copied!
3
0
0

読み込み中.... (全文を見る)

全文

(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と同じ)

参照

関連したドキュメント

○○でございます。私どもはもともと工場協会という形で活動していたのですけれども、要

一般法理学の分野ほどイングランドの学問的貢献がわずか

*+パラメータを Arduino MICRO マイコンでK!す るためのソフト(ソースコード)を Arduino IDE でコンパイルJなMN ( スケッチ )

復旧と復興の定義(2006 年全国自治体調査から).

吸収分割契約承認取締役会(東京電力株式会社) 平成27年5月1日 吸収分割契約承認取締役決定(当社) 平成27年5月1日 吸収分割契約締結

法人と各拠点 と各拠点 と各拠点 と各拠点 の連携及び、分割 の連携及び、分割 の連携及び、分割 の連携及び、分割. グループホーム

(6) 管理者研修:夏に、 「中長期計画策定」の演習/年度末の 3 月は、 「管理者の役割につ

名称 「食べ残しゼロ協力店」登録制度 対象 名古屋市内の飲食店及び宿泊施設 登録要件