make的使用和Makefile的編寫1

2021-06-27 07:46:48 字數 1412 閱讀 1096

make是linux中用來維護程式模組關係和生成可執行程式的工具,有了make命令和makefile檔案,整個專案的原始檔可以自動的編譯,極大程度的提高了軟體的開發效率。從windows中轉到linux確實不太適應,但是習慣就好,下面簡單介紹一下make的使用及makefile的編寫。

make從makefile中獲取模組間的依賴關係,使用makefile中的命令對過時的檔案進行編譯。

1 makefile的基本構成

目標檔案列表分隔符 依賴檔案列表[;命令]

[命令]

[命令]

main:main.o module1.o module2.o ;gcc main.o module1.o module2.o -o main

或者main:main.o module1.o module2.o 

gcc main.o module1.o module2.o -o main

注意命令這一行一定要以tab鍵開頭

2 make是如何解釋執行makefile的

makefile檔案:

main:main.o module1.o module2.o 

gcc main.o module1.o module2.o -o main

main.o:main.c head1.h head2.h common_head.h

gcc -c main.c

module1.o:modue1.c head1.h

gcc -c module1.c

module2.o:modue2.c head2.h

gcc -c module2.c

#this is a makefile

從目標檔案找依賴檔案,首先找到目標檔案main的依賴檔案開始,發現沒有,然後找到目標檔案main.o、module1.o、module2.o的依賴檔案都存在,生成這三個目標檔案,然後回溯到第一行發現目標檔案main的依賴檔案都存在,用後面的命令gcc main.o module1.o module2.o -o main生成main。

#this is a makefile這一行是注釋,不執行。

當修改某乙個檔案後執行make,他會比較目標檔案和依賴檔案的時間先後,如果依賴檔案比較新就重新生成,並檢查所有相關的目標檔案與依賴檔案的時間判斷是否需要重新生成。

3 其他說明

如果一行過長可以在這一行末尾輸入乙個反斜槓(\),由反斜槓連線的多行被當作一行對待。反斜槓與新的一行之間不要有空白。

使用下面的方式告訴make使用哪個makefile

make -f othername

make --file=othername

通常make把makefile中的第乙個規則中的目標當成最終目標。如果第一條規則中有多個目標檔案,則把第乙個當為最終目標,通常最終目標就是最後要編譯成的可執行檔案。其他規則中的檔案都是為了生成目標檔案所產生的中間檔案。

使用autotools生成makefile

接下來就要正式步驟 1,autoscan 生成了一乙個configure.scan檔案。編輯它,增加巨集宣告 am init automake hello,1.0 和ac config files makefile 然後儲存為configure.ac。其實configure.scan就是乙個模板。p...

make的簡單使用

make 是乙個命令工具,makefile 是乙個文字檔案。他們的關係是 make是乙個解釋 makefile 中的指令的命令工具,makefile 的工作原理就是呼叫系統中的 make 命令解釋當前的 makefile。下面是make 乙個簡單的演示 首先編寫四個.c 檔案,分別取名 main.c...

make的簡單使用規則

make的使用 1.make基本使用規則 make在使用時可以根據一系列預先設定的規則來執行。這些設定的規則可以記錄在乙個檔案中,預設該檔案的名字是makefile。make的使用形式為 make option macrodef target option指出make的工作行為,make的主要選項有...