前陣子讓寫makefile,糾結了下,基本忘記差很少了。ui
1.gcc的編譯選項spa
-c命令行 |
只是編譯不連接,生成目標文件「.o」調試 |
-Sci |
只是編譯不彙編,生成彙編代碼get |
-E編譯器 |
只進行預編譯,不作其餘處理編譯 |
-gtable |
在可執行程序中包含標準調試信息class |
-o file |
把輸出文件輸出到file裏 |
-v |
打印出編譯器內部編譯各過程的命令行信息和編譯器的版本 |
-I dir |
在頭文件的搜索路徑列表中添加dir目錄 |
-L dir |
在庫文件的搜索路徑列表中添加dir目錄 |
-static |
連接靜態庫 |
-llibrary |
鏈接名爲library的庫文件 |
2.makefile的規則
target...: prerequire...
command
看到這個就熟悉了
3. makefile的文件中有什麼
a)依賴的部分include
b)變量定義
c)顯示規則(你所直觀看到的依賴)
d)隱式規則(偷懶依靠makefile語法省寫的那部分)
e)註釋#
4.makefile 的工做步驟:
a)讀取makefile
b)讀include
c)初始化文件中的變量
d)推導隱式規則
e)爲全部目標創建依賴鏈
f)根據依賴鏈,決定生成哪些目標
g) 執行生成命令
5.最簡單的demo
target=hellotarget_o=hello.otarget_c=hello.c$(target):$(target_o) cc -o $(target) $(target_o)$(target_o):$(target_c) cc -c $(target) $(target_c)