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/
沒有留言:
張貼留言