2014年6月25日 星期三

GCC make 編譯 C 程式

gcc -c *.c
-c 告訴編譯器你想要為每個原始檔建造目的檔,但是沒有將之連結產生完整的可執行程式

gcc *.o -o a.out
將目的檔連結在一起,並且產生完整的可執行程式(a.out)

make所編譯的每個檔案被稱作 target
針對每個target,make必須被告知兩件事情:
1. dependencies (依存項目): target 將從哪些檔案產生
2. recipe (執行指令): 產生檔案所需要執行的一組指令

關於 target, dependencies and recipe的所有細節都必須被儲存在一個稱為 makefile or Makefile的檔案中。

launch.o: launch.c launch.h thruster.h
        gcc -c launch.c

綠色的部分為target
藍色的部分為dependencies
紅色的部分為recipe
紫色的部分為TAB,所有的recipe必須以TAB字元開頭

進階一點的話可以參考更自動化的工具 autoconf
Ref: https://www.gnu.org/software/autoconf/
Example: http://www.ibm.com/developerworks/cn/linux/l-makefile/

沒有留言:

張貼留言