一,示例
四個檔案:main.c;main.h;t_print.c;t_print.h
makefile:寫法1)
main:main.o t_print.o
gcc main.o t_print.o -o main
main.o:main.c main.h
gcc -c main.c
t_print.o:t_print.c t_print.h
gcc -c t_print.c
clean:
rm main.o t_print.o
執行:make 或 make main
刪除中間檔案: make clean
寫法2)
main:main.o t_print.o
gcc main.o t_print.o -o main
main.o:main.c main.h
gcc -c main.c
t_print.o:t_print.c t_print.h
gcc -c t_print.c
執行:make 或 make main
寫法3)
main:main.o t_print.o
gcc main.o t_print.o -o main
執行:make 或 make main
make 命令會自動推導 main.o的產生所需要的檔案
寫法4)
object=main.o t_print.o
main:$(object)
gcc $(object) -o main
clean:
rm $(object)
這裡使用了變數,但是依賴關係顯得有些不清楚。
【特別注意】gcc 前面是 tab空格鍵
二,make 執行過程
1)make 在當前目錄下找 "makefile"或"makefile"的檔案
2)如果找到,則會找檔案中第乙個目標檔案(target)。如上例子中main
3)如果 main 命令的執行,依賴後面命令執行所產生的檔案,則先執行後面命令
4)當main 命令需要的檔案生成完畢,則執行main 命令
三,細節
1)可以使用其他的檔名作為makefile 如 make.linux
make -f make.linux //-f file 指定檔案
2)makefile 中還可以包含其他檔案例如
makefile:
object=main.o t_print.o
main:$(object)
gcc $(object) -o main
clean:
rm $(object)
include aa
aa:cleanmain:
rm main
執行:make cleanmain想當於執行 rm main
說明:make命令開始時,會把找尋include所指出的其他file,並把file中內容放置在當前位置
3)makefile中某條命令前加上 "-"表示無論發生什麼錯誤,都不要報錯繼續執行
-rm main.o t_print.o // 可以寫成萬用字元 rm *.o
-----夜已經深了----未完待續-----
Linux C程式設計之訊號介紹
unix訊號使用總結 訊號的原理 訊號是一種程序通訊的方法,他應用於非同步事件的處理。訊號的實現是一種軟中斷。它被傳送為乙個正在執行的程序,已告知程序某個事件發生了。1.1 訊號的建立 用訊號處理來模擬作業系統的中斷功能。要想使用訊號處理功能,你要做的就是填寫乙個訊號處理函式即可。1 呼叫signa...
Linux C程式設計之訊號介紹
unix訊號使用總結 訊號的原理 訊號是一種程序通訊的方法,他應用於非同步事件的處理。訊號的實現是一種軟中斷。它被傳送為乙個正在執行的程序,已告知程序某個事件發生了。1.1 訊號的建立 用訊號處理來模擬作業系統的中斷功能。要想使用訊號處理功能,你要做的就是填寫乙個訊號處理函式即可。1 呼叫signa...
linux C程式設計之死鎖
死鎖 死鎖就是你和小明打架,互相掐住對方脖子,你們都說 你先放 結果誰都不放,死鎖了.在程式裡面,有兩個鎖,a執行緒鎖住第乙個,b執行緒鎖住了第二個,這時如果a再試圖鎖第二個,失敗,因為b已經鎖住了,a只能等待.就在這時b試圖鎖第乙個,結果失敗,因為a已經鎖住了,b只好等待.就這樣大家一直等下去,誰...