LINUX環(huán)境高級編程-第一講Makefile課件.ppt

LINUX環(huán)境高級編程-第一講Makefile課件.ppt

ID:57058143

大?。?40.00 KB

頁數(shù):76頁

時間:2020-07-30

LINUX環(huán)境高級編程-第一講Makefile課件.ppt_第1頁
LINUX環(huán)境高級編程-第一講Makefile課件.ppt_第2頁
LINUX環(huán)境高級編程-第一講Makefile課件.ppt_第3頁
LINUX環(huán)境高級編程-第一講Makefile課件.ppt_第4頁
LINUX環(huán)境高級編程-第一講Makefile課件.ppt_第5頁
資源描述:

《LINUX環(huán)境高級編程-第一講Makefile課件.ppt》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。

1、Makefile精講融眾人智慧,為客戶提供最優(yōu)質(zhì)服務(wù)融慧廣澤科技有限公司通聯(lián)物網(wǎng)教育咨詢有限公司喬林什么是makefile?或許很多Winodws的程序員都不知道這個東西,因為那些Windows的IDE都為你做了這個工作,但要作一個好的和professional的程序員,makefile還是要懂。這就好像現(xiàn)在有這么多的HTML的編輯器,但如果你想成為一個專業(yè)人士,你還是要了解HTML的標識的含義。特別在Unix下的軟件編譯,你就不能不自己寫makefile了,會不會寫makefile,從一個側(cè)面說明了一個人是否具備完成大型工程的能

2、力。因為,makefile關(guān)系到了整個工程的編譯規(guī)則。一個工程中的源文件不計數(shù),其按類型、功能、模塊分別放在若干個目錄中,makefile定義了一系列的規(guī)則來指定,哪些文件需要先編譯,哪些文件需要后編譯,哪些文件需要重新編譯,甚至于進行更復(fù)雜的功能操作,因為makefile就像一個Shell腳本一樣,其中也可以執(zhí)行操作系統(tǒng)的命令。概述makefile帶來的好處就是——“自動化編譯”,一旦寫好,只需要一個make命令,整個工程完全自動編譯,極大的提高了軟件開發(fā)的效率。make是一個命令工具,是一個解釋makefile中指令的命令工具

3、,一般來說,大多數(shù)的IDE都有這個命令,比如:Delphi的make,VisualC++的nmake,Linux下GNU的make??梢?,makefile都成為了一種在工程方面的編譯方法。當(dāng)然,不同廠商的make各不相同,也有不同的語法,但其本質(zhì)都是在“文件依賴性”上做文章,這里,我僅對GNU的make進行講述。必竟,這個make是應(yīng)用最為廣泛的,也是用得最多的。而且其還是最遵循于IEEE1003.2-1992標準的(POSIX.2)。本課程中,將以C/C++的源碼作為我們基礎(chǔ),所以必然涉及一些關(guān)于C/C++的編譯的知識,相關(guān)于這

4、方面的內(nèi)容,還請各位查看相關(guān)的編譯器的文檔。這里所默認的編譯器是UNIX下的GCC和CC。關(guān)于程序的編譯和鏈接關(guān)于程序編譯的一些規(guī)范和方法,一般來說,無論是C、C++、還是pas,首先要把源文件編譯成中間代碼文件,在Windows下也就是.obj文件,UNIX下是.o文件,即ObjectFile,這個動作叫做編譯(compile)。然后再把大量的ObjectFile合成執(zhí)行文件,這個動作叫作鏈接(link)。編譯時,編譯器需要的是語法的正確,函數(shù)與變量的聲明的正確。對于后者,通常是你需要告訴編譯器頭文件的所在位置(頭文件中應(yīng)該只是

5、聲明,而定義應(yīng)該放在C/C++文件中),只要所有的語法正確,編譯器就可以編譯出中間目標文件。一般來說,每個源文件都應(yīng)該對應(yīng)于一個中間目標文件(O文件或是OBJ文件)。鏈接時,主要是鏈接函數(shù)和全局變量,所以,我們可以使用這些中間目標文件(O文件或是OBJ文件)來鏈接我們的應(yīng)用程序。鏈接器并不管函數(shù)所在的源文件,只管函數(shù)的中間目標文件(ObjectFile),在大多數(shù)時候,由于源文件太多,編譯生成的中間目標文件太多,而在鏈接時需要明顯地指出中間目標文件名,這對于編譯很不方便,所以,我們要給中間目標文件打個包,在Windows下這種包叫

6、“庫文件”(LibraryFile),也就是.lib文件,在UNIX下,是ArchiveFile,也就是.a文件。總結(jié):源文件首先會生成中間目標文件,再由中間目標文件生成執(zhí)行文件。在編譯時,編譯器只檢測程序語法,和函數(shù)、變量是否被聲明。如果函數(shù)未被聲明,編譯器會給出一個警告,但可以生成ObjectFile。而在鏈接程序時,鏈接器會在所有的ObjectFile中找尋函數(shù)的實現(xiàn),如果找不到,那到就會報鏈接錯誤碼(LinkerError),在VC下,這種錯誤一般是:Link2001錯誤,意思說是說,鏈接器未能找到函數(shù)的實現(xiàn)。你需要指定函

7、數(shù)的ObjectFile.Makefile介紹我們要寫一個Makefile來告訴make命令如何編譯和鏈接這幾個文件。我們的規(guī)則是:1)如果這個工程沒有編譯過,那么我們的所有C文件都要編譯并被鏈接。2)如果這個工程的某幾個C文件被修改,那么我們只編譯被修改的C文件,并鏈接目標程序。3)如果這個工程的頭文件被改變了,那么我們需要編譯引用了這幾個頭文件的C文件,并鏈接目標程序。Makefile介紹一、Makefile的規(guī)則target...:prerequisites...command......target也就是一個目標文件,可以

8、是ObjectFile,也可以是執(zhí)行文件。還可以是一個標簽(Label),prerequisites就是要生成那個target所需要的文件或是目標。command也就是make需要執(zhí)行的命令。(任意的Shell命令)這是一個文件的依賴關(guān)系,也就是說

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內(nèi)容,確認文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。