歡迎使用CSDN markdown

2021-09-30 01:31:53 字數 2252 閱讀 4776

@[toc]

linux下makefile的簡單應用

一、概述

什麼是makefile?或許很多人都不知道,但如果你想要成為乙個專業人士,特別是在linux下的軟體編譯就不能不自己寫makefile了。會不會寫makefile很大程度上可以從側面表現出乙個人是否有能力完成乙個大工程。所以說寫乙個適合自己的makefile還是很重要的。

make 是乙個命令工具,它解釋 makefile 中的指令(應該說是規則)。在 makefile

檔案中描述了整個工程所有檔案的編譯順序、編譯規則。 makefile 有自己的書寫格式、

關鍵字、函式。像 c 語言有自己的格式、關鍵字和函式一樣。而且在 makefile 中可以

使用系統 shell 所提供的任何命令來完成想要的工作。 makefile(在其它的系統上可能

是另外的檔名)在絕大多數的 ide 開發環境中都在使用,已經成為一種工程的編譯

方法。二、make是如何工作的

在預設的方式下,也就是我們只輸入make命令。那麼,

(1) make會在當前目錄下找名字叫「makefile」或「makefile」的檔案。

(2) 如果找到,它會找檔案中的第乙個目標檔案,在上面的例子中,他會找到 「edit」 這個檔案,並把這個檔案作為最終的目標檔案。

(3) 如果edit檔案不存在,或是edit所依賴的後面的 .o 檔案的檔案修改時間要比edit 這個檔案新,那麼,他就會執行後面所定義的命令來生成edit這個檔案。

(4) 如果edit所依賴的.o檔案也存在,那麼make會在當前檔案中找目標為.o檔案的 依賴性,如果找到則再根據那乙個規則生成.o檔案。(這有點像乙個堆疊的過程)

(5)你的c檔案和**件是存在的,於是make會生成 .o 檔案,然後再用 .o 檔案聲 明make的終極任務,也就是執行檔案edit了。

這就是整個make的依賴性,make會一層又一層地去找檔案的依賴關係,直到最終編譯出第乙個目標檔案。在找尋的過程中,如果出現錯誤,比如最後被依賴的檔案找不到,那麼make就會直接退出,並報錯,而對於所定義的命令的錯誤,或是編譯不成功,make根本不理。make只管檔案的依賴性,即,如果在我找了依賴關係之後,冒號後面的檔案還是不在,那麼對不起,我就不工作啦。

make clean

清空目標檔案的規則

每個makefile中都應該寫乙個清空目標檔案(.o和執行檔案)的規則,這不僅便於重編譯,也很利於保持檔案的清潔。這是乙個「修養」(呵呵,還記得我的《程式設計修養》嗎)。一般的風格都是:

clean:

rm edit (o

bjec

ts)更

為穩健的

做法是:

.pho

ny:c

lean

clea

n:−r

medi

t(objects)更為穩健的做法是:.phony:cleanclean:−rmedit

(objects)

前面說過,.phony意思表示clean是乙個「偽目標」,。而在rm命令前面加了乙個小減號的意思就是,也許某些檔案出現問題,但不要管,繼續做後面的事。當然,clean的規則不要放在檔案的開頭,不然,這就會變成make的預設目標,相信誰也不願意這樣。不成文的規矩是——「clean從來都是放在檔案的最後」。

簡單的makefile例項

首先建立三個檔案,分別為main.c,test.h,test.c。**如下:

vim main.c

int main(void)

e^dt\,.

γ(z)=∫

0∞​t

z−1e

−tdt

.你可以找到更多關於的資訊latex數學表示式here.

可以使用uml圖表進行渲染。 mermaid. 例如下面產生的乙個序列圖:

這將產生乙個流程圖。:

我們依舊會支援flowchart的流程圖:

如果你想嘗試使用此編輯器, 你可以在此篇文章任意編輯。當你完成了一篇文章的寫作, 在上方工具欄找到文章匯出,生成乙個.md檔案或者.html檔案進行本地儲存。

如果你想載入一篇你寫過的.md檔案,在上方工具欄可以選擇匯入功能進行對應副檔名的檔案匯入,

繼續你的創作。

mermaid語法說明↩︎

註腳的解釋 ↩︎

歡迎使用CSDN markdow

本markdown編輯器使用stackedit修改而來,用它寫部落格,將會帶來全新的體驗哦 markdown 是一種輕量級標記語言,它允許人們使用易讀易寫的純文字格式編寫文件,然後轉換成格式豐富的html頁面。維基百科 使用簡單的符號標識不同的標題,將某些文字標記為粗體或者斜體,建立乙個鏈結等,詳細...

歡迎毛毛與妞妞使用CSDN markdown編輯器

建立乙個自定義列表 如何建立乙個註腳 注釋也是必不可少的 katex數學公式 新的甘特圖功能,豐富你的文章 uml 圖表 flowchart流程圖 匯出與匯入 你好!這是你第一次使用markdown編輯器所展示的歡迎頁。如果你想學習如何使用markdown編輯器,可以仔細閱讀這篇文章,了解一下mar...

歡迎使用CSDN markdow1n編輯器

本markdown編輯器使用stackedit修改而來,用它寫部落格,將會帶來全新的體驗哦 markdown 是一種輕量級標記語言,它允許人們使用易讀易寫的純文字格式編寫文件,然後轉換成格式豐富的html頁面。維基百科 使用簡單的符號標識不同的標題,將某些文字標記為粗體或者斜體,建立乙個鏈結等,詳細...