Docs/make犬への道
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[takataka]] | [[Docs]]
#contents
*はじめに [#v3745a97]
**これは何? [#re15248e]
この文章は,龍谷大学理工学部数理情報学科「[[プログラミン...
C言語ソースの分割コンパイルの仕方をちょっとはかじったこと...
**更新履歴 [#y6442d31]
-2002-01-?? [[HTML版>http://tortoise1.math.ryukoku.ac.jp/...
-2002-12-10 [[HTML版>http://tortoise1.math.ryukoku.ac.jp/...
-2006-10-19 wiki化,追記したり修正したり
-2008-04-02 [[Docs]]の下へ移動
*makeって何? [#yd1a4705]
「C言語のソースをコンパイルして実行形式のプログラムを作る...
一度「原料」(Cの例ならソースファイル),「作りたいもの」...
したがって,人手では手間のかかる「作り方」をコンピュータ...
*基本編 [#f884c050]
**その一: ソースがmain()を含むファイル一つだけでできてい...
「ソース hoge.c をコンパイルして実行形式 hoge を作る」作...
$ cc hoge.c -o hoge
とするでしょう.hoge.cを修正するたびに上の通りキーボード...
$ make
とするだけで済むようにしてみよう,ちうわけです.
この例の場合,「原料」=hoge.c,「作りたいもの」=hoge,「...
#pre{{
hoge: hoge.c
cc hoge.c -o hoge
}}
つまり,
#pre{{
「作りたいもの」: 「原料」
「作り方」
}}
ということです.
''!注意!'' 上記のMakefileの2行目の"cc"が後ろに下がって...
さて,上記のような内容のファイルをMakefileという名前で作...
$ make
と打つだけです(補足参照).すると,makeコマンドがMakefil...
''補足'' makeコマンドは,引数なしで実行される(ただmakeと...
$ make -f hogemake
というように -f オプションを使ってファイル名を指定します...
**その二: 複数のソースから成る実行形式が一つの場合 [#v53...
''「分割コンパイルって何?」という人は,こちらからどうぞ'...
例として, src1.c と src2.c から hoge という実行形式を作...
この場合,makeを使わずに自分でコンパイルをするとしたら,
+src1.c をコンパイルしてオブジェクトファイル src1.o を作る
$ cc -c src1.c
+src2.c をコンパイルしてオブジェクトファイル src2.o を作る
$ cc -c src2.c
+オブジェクトファイルをリンクして実行形式 hoge を作る
$ cc src1.o src2.o -o hoge
という手順をとることになります.したがって, Makefile に...
ここで,1. と 2. はどちらを先にやっても構いませんが,3. ...
#pre{{
hoge <---------+-- src1.o <----------- src1.c
3. | 1.
+-- src2.o <----------- src2.c
2.
}}
矢印の先にあるファイルは,元の方にあるファイルから作られ...
#pre{{
hoge: src1.o src2.o <3. の矢印の関係を...
cc src1.o src2.o -o hoge <hoge の作り方>
src1.o: src1.c <1. の矢印の関係を...
cc -c src1.c <src1.o の作り方>
src2.o: src2.c <2. の矢印の関係を...
cc -c src2.c <src2.o の作り方>
}}
このような Makefile を用意して make を実行すると,makeコ...
例えば,一度 make を実行して hoge を作ったあとで,src1.c ...
-1. の矢印の先の src1.o の方が元の src1.c よりも古いので...
-すると今度は,3. の矢印の先の hoge の方が元の src1.o よ...
という作業を実行して,めでたく hoge を新しくすることがで...
*応用編 [#o89e9628]
**複数の実行プログラムへの対応 [#h7822afb]
これまでの説明では,最終的に作られる実行形式は一つだけで...
上の hoge に加えて,honya というプログラムも作りたいとし...
#pre{{
honya <---------+-- src1.o <----------- src1.c
c. | a.
+-- funya.o <---------- funya.c
b.
}}
ここで,src1.c と src1.o は hoge を作る元になったファイル...
このとき, hoge と honya の両方を作ることができる Makefil...
#pre{{
hoge: src1.o src2.o
cc src1.o src2.o -o hoge
honya: src1.o funya.o <c. の矢印の関係...
cc src1.o funya.o -o honya <honya の作り方>
src1.o: src1.c
cc -c src1.c
src2.o: src2.c
cc -c src2.c
funya.o: funya.c <b. の矢印の関係...
cc -c funya.c <funya.o の作り方>
}}
新たに追加されたのは,b. と c. の矢印の関係を表す部分です...
さて,早速 make してみましょう…と言いたいところですが,実...
これを解決するための一つの方法は,make コマンドを
$ make
と実行するかわりに,
$ make hoge
あるいは
$ make honya
とする,というものです.このようにすると,Makefile の中の...
**小技 [#g9379306]
***高原の小枝を大切に [#w0675836]
複数の実行プログラムを作れる Makefile の書き方については...
all: hoge honya
という一行を追加する,というものです(この行が先頭にある...
***暗黙のルールを使ってMakefileの記述をさぼる [#w3f8c984]
工事中
終了行:
[[takataka]] | [[Docs]]
#contents
*はじめに [#v3745a97]
**これは何? [#re15248e]
この文章は,龍谷大学理工学部数理情報学科「[[プログラミン...
C言語ソースの分割コンパイルの仕方をちょっとはかじったこと...
**更新履歴 [#y6442d31]
-2002-01-?? [[HTML版>http://tortoise1.math.ryukoku.ac.jp/...
-2002-12-10 [[HTML版>http://tortoise1.math.ryukoku.ac.jp/...
-2006-10-19 wiki化,追記したり修正したり
-2008-04-02 [[Docs]]の下へ移動
*makeって何? [#yd1a4705]
「C言語のソースをコンパイルして実行形式のプログラムを作る...
一度「原料」(Cの例ならソースファイル),「作りたいもの」...
したがって,人手では手間のかかる「作り方」をコンピュータ...
*基本編 [#f884c050]
**その一: ソースがmain()を含むファイル一つだけでできてい...
「ソース hoge.c をコンパイルして実行形式 hoge を作る」作...
$ cc hoge.c -o hoge
とするでしょう.hoge.cを修正するたびに上の通りキーボード...
$ make
とするだけで済むようにしてみよう,ちうわけです.
この例の場合,「原料」=hoge.c,「作りたいもの」=hoge,「...
#pre{{
hoge: hoge.c
cc hoge.c -o hoge
}}
つまり,
#pre{{
「作りたいもの」: 「原料」
「作り方」
}}
ということです.
''!注意!'' 上記のMakefileの2行目の"cc"が後ろに下がって...
さて,上記のような内容のファイルをMakefileという名前で作...
$ make
と打つだけです(補足参照).すると,makeコマンドがMakefil...
''補足'' makeコマンドは,引数なしで実行される(ただmakeと...
$ make -f hogemake
というように -f オプションを使ってファイル名を指定します...
**その二: 複数のソースから成る実行形式が一つの場合 [#v53...
''「分割コンパイルって何?」という人は,こちらからどうぞ'...
例として, src1.c と src2.c から hoge という実行形式を作...
この場合,makeを使わずに自分でコンパイルをするとしたら,
+src1.c をコンパイルしてオブジェクトファイル src1.o を作る
$ cc -c src1.c
+src2.c をコンパイルしてオブジェクトファイル src2.o を作る
$ cc -c src2.c
+オブジェクトファイルをリンクして実行形式 hoge を作る
$ cc src1.o src2.o -o hoge
という手順をとることになります.したがって, Makefile に...
ここで,1. と 2. はどちらを先にやっても構いませんが,3. ...
#pre{{
hoge <---------+-- src1.o <----------- src1.c
3. | 1.
+-- src2.o <----------- src2.c
2.
}}
矢印の先にあるファイルは,元の方にあるファイルから作られ...
#pre{{
hoge: src1.o src2.o <3. の矢印の関係を...
cc src1.o src2.o -o hoge <hoge の作り方>
src1.o: src1.c <1. の矢印の関係を...
cc -c src1.c <src1.o の作り方>
src2.o: src2.c <2. の矢印の関係を...
cc -c src2.c <src2.o の作り方>
}}
このような Makefile を用意して make を実行すると,makeコ...
例えば,一度 make を実行して hoge を作ったあとで,src1.c ...
-1. の矢印の先の src1.o の方が元の src1.c よりも古いので...
-すると今度は,3. の矢印の先の hoge の方が元の src1.o よ...
という作業を実行して,めでたく hoge を新しくすることがで...
*応用編 [#o89e9628]
**複数の実行プログラムへの対応 [#h7822afb]
これまでの説明では,最終的に作られる実行形式は一つだけで...
上の hoge に加えて,honya というプログラムも作りたいとし...
#pre{{
honya <---------+-- src1.o <----------- src1.c
c. | a.
+-- funya.o <---------- funya.c
b.
}}
ここで,src1.c と src1.o は hoge を作る元になったファイル...
このとき, hoge と honya の両方を作ることができる Makefil...
#pre{{
hoge: src1.o src2.o
cc src1.o src2.o -o hoge
honya: src1.o funya.o <c. の矢印の関係...
cc src1.o funya.o -o honya <honya の作り方>
src1.o: src1.c
cc -c src1.c
src2.o: src2.c
cc -c src2.c
funya.o: funya.c <b. の矢印の関係...
cc -c funya.c <funya.o の作り方>
}}
新たに追加されたのは,b. と c. の矢印の関係を表す部分です...
さて,早速 make してみましょう…と言いたいところですが,実...
これを解決するための一つの方法は,make コマンドを
$ make
と実行するかわりに,
$ make hoge
あるいは
$ make honya
とする,というものです.このようにすると,Makefile の中の...
**小技 [#g9379306]
***高原の小枝を大切に [#w0675836]
複数の実行プログラムを作れる Makefile の書き方については...
all: hoge honya
という一行を追加する,というものです(この行が先頭にある...
***暗黙のルールを使ってMakefileの記述をさぼる [#w3f8c984]
工事中
ページ名: