Makefile總結(jié)

概述

main: main.c
    gcc main.c -o main

在源代碼所在目錄新建一個(gè)Makefile文件,文件內(nèi)容為上述內(nèi)容,保存后在當(dāng)前目錄命令行下輸入make,就可以得到編譯后的可執(zhí)行文件main
上述命令解釋如下:
每一個(gè)Makefile主體都是有若干個(gè)規(guī)則模塊組成:表明輸出的目標(biāo)(本例為main文件),輸出目標(biāo)的依賴對(duì)象(本例為main.c文件),生成目標(biāo)需要執(zhí)行的命令(本例為gcc main.c -o main),具體格式為:

目標(biāo)/文件: 依賴文件列表
(Tab)命令

注意:

  1. 命令中前面(TAB)表示用戶按了TAB鍵產(chǎn)生的空白區(qū)域。
  2. 目標(biāo)通常是要產(chǎn)生的文件名稱,也可以是一個(gè)執(zhí)行的動(dòng)作名稱如clean或cleanall等
  3. 依賴文件列表是用來(lái)輸入從而產(chǎn)生目標(biāo)的文件,一個(gè)目標(biāo)經(jīng)常有幾個(gè)依賴文件,文件名稱之間以空白隔開,如main: test1.c test2.c
  4. 命令是make執(zhí)行的動(dòng)作,一個(gè)規(guī)則可以含有幾個(gè)命令,每個(gè)命令占一行。
  5. 每個(gè)命令行前面必須是一個(gè)TAB字符,即命令行第一個(gè)字符是TAB。
  6. 如果一個(gè)依賴關(guān)系發(fā)生變化,則需要規(guī)則調(diào)用命令對(duì)相應(yīng)依賴和服務(wù)進(jìn)行處理,從而更新或創(chuàng)建目標(biāo)。
  7. 編譯并生成執(zhí)行代碼并不是編寫make規(guī)則的唯一事情。Makefile文件可讓make完成編譯程序以外的任務(wù)如刪除中間文件和可執(zhí)行文件等。exec_file為可執(zhí)行文件,中間文件是".o"結(jié)尾的文件,代碼如下:
clean:
       $ rm *.o exec_file

參考

  1. ARM嵌入式Linux系統(tǒng)構(gòu)建與驅(qū)動(dòng)開發(fā)范例,周立功,P45
  2. 跟我一起寫Makefile

未完待續(xù)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 來(lái)自陳浩的一片老文,但絕對(duì)營(yíng)養(yǎng)。 示例工程:3 個(gè)頭文件*.h,和 8 個(gè) C 文件*.c。 初 編譯過(guò)程,源文件...
    周筱魯閱讀 4,786評(píng)論 0 17
  • @(linux 編程)[開發(fā)技能, 工具使用] What is GNU Make Make 是控制工程中通過(guò)源碼生...
    orientlu閱讀 11,619評(píng)論 0 26
  • makefile關(guān)系到整個(gè)工程的編譯規(guī)則,一個(gè)工程中的源文件不計(jì)其數(shù),按其類型、功能、模塊分別放在若干的目錄當(dāng)中,...
    Joe_HUST閱讀 1,985評(píng)論 0 3
  • Ubuntu的發(fā)音 Ubuntu,源于非洲祖魯人和科薩人的語(yǔ)言,發(fā)作 oo-boon-too 的音。了解發(fā)音是有意...
    螢火蟲de夢(mèng)閱讀 100,675評(píng)論 9 468
  • 說(shuō)起“攝影”這個(gè)詞,我一直不太敢正視它,總懷著一種仰望的姿態(tài)來(lái)膜拜。我覺(jué)得現(xiàn)在的我只能說(shuō)是會(huì)拍照,而不敢說(shuō)自己會(huì)攝...
    莊稼漢Farmer閱讀 1,566評(píng)論 15 39

友情鏈接更多精彩內(nèi)容