#navi(../)
* Makefileのサンプル [#d68be360]
本資料は、ヘッダーファイル、Cソースファイルの各依存関係を記したMakefileのサンプルになります。

#htmlinsertpcsp(c-top.html,c-sp.html)
#contents

* Cサンプルソースなどの説明 [#bae7f9f8]
本資料で使用しているCサンプルソース、ヘッダーファイルは以下の通りです。~
main.cからsub1.c, sub2.cの関数を呼び出します。~
また、sub1.h, sub2.hも用意してあります。
#ref(01.gif)

** main.c [#r2c159d5]
sub1.c, sub2.c の呼び出し元となる main.c は以下の通りです。

&ref(main.c); (改行コードLF)
 #include <stdio.h>
 #include "sub1.h"
 #include "sub2.h"
 
 int main(void)
 {
     sub1_func();
     sub2_func();
 
     return 0;
 }

** sub1.c, sub1.h [#m70342e7]
main.cから呼び出されるsub1_func()のサンプルソースとヘッダーファイルです。

*** sub1.h [#w6f2d549]
&ref(sub1.h); (改行コードLF)
 #ifndef __SUB1_H__
 #define __SUB1_H__
 
 extern void sub1_func(void);
 
 #endif

*** sub1.c [#i8fba2a3]
&ref(sub1.c); (改行コードLF)
 #include <stdio.h>
 #include "sub1.h"
 
 void sub1_func(void)
 {
     printf("HELLO!\n");
 }



** sub2.c, sub2.h [#jebfe7b6]
main.cから呼び出されるsub2_func()のサンプルソースとヘッダーファイルです。

*** sub2.h [#j829e0bf]
&ref(sub2.h); (改行コードLF)
 #ifndef __SUB2_H__
 #define __SUB2_H__
 
 extern void sub2_func(void);
 
 #endif

*** sub2.c [#q3104846]
&ref(sub2.c); (改行コードLF)
 #include <stdio.h>
 #include "sub2.h"
 
 void sub2_func(void)
 {
     printf("BYE!\n");
 }

* サンプルMakeファイル [#x84101d0]
以下に上記のCサンプルソース、ヘッダーファイルの依存関係を記したMakefileを記します。

&ref(Makefile); (改行コードLF)
 #
 # Sample Makefile
 #
 CC = gcc
 CFLAGS=-O
 OBJS = main.o sub1.o sub2.o
 TARGET = sample
 
 sample: main.o sub1.o sub2.o
 	$(CC) $(CFLAGS) $(OBJS) -o $(TARGET)
 main.o: main.c
 	$(CC) -c main.c
 sub1.o: sub1.c sub1.h
 	$(CC) -c sub1.c
 sub2.o: sub2.c sub2.h
 	$(CC) -c sub2.c
 clean:
 	rm -f $(OBJS) $(TARGET)

上記のMakefileを簡単に説明します。~
- CC~
コンパイラを指定しています。この場合はgccです。
- OBJS~
コンパイルにて出力されるオブジェクトファイル名を指定しています。
- TARGET~
実行ファイル名を指定しています。
-sample~
実行ファイルに依存するオブジェクトファイルを指定しています。~
またコンパイルし実行ファイルを出力する構文を指定してあります。
-main.o~
main.oのファイルに依存するソースファイルを指定しています。
-sub1.o~
sub1.oのファイルに依存するソースファイルを指定しています。
-sub2.o~
sub2.oのファイルに依存するソースファイルを指定しています。
-clean~
make cleanによりオブジェクトファイルおよび実行ファイルを削除します。

* Makeしてみる [#z17ab4e0]
以下に端末からmakeして実行した時のオペレーションを記します。

 $ make
 gcc -c main.c
 gcc -c sub1.c
 gcc -c sub2.c
 gcc -O main.o sub1.o sub2.o -o sample

 $ ./sample 
 HELLO!
 BYE!

 $ make clean 
 rm -f main.o sub1.o sub2.o sample

以上、Makefileのサンプルでした。

#htmlinsertpcsp(c-btm.html,c-sp.html)

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS