Linux編程GCC命令Makefile文件編寫ppt課件_第1頁
Linux編程GCC命令Makefile文件編寫ppt課件_第2頁
Linux編程GCC命令Makefile文件編寫ppt課件_第3頁
Linux編程GCC命令Makefile文件編寫ppt課件_第4頁
Linux編程GCC命令Makefile文件編寫ppt課件_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、推薦資料LinuxC資源網(wǎng)站:目錄Linux編程概述GCCMakefile課程實踐目錄Linux編程概述GCCMakefile課程實踐Linux編程概述Linux的編程語言開發(fā)過程Linux開發(fā)工具Linux的編程語言基本語言C、C+、Java腳本語言Perl、PHP、Bash開發(fā)過程編輯編譯鏈接運轉(zhuǎn)調(diào)試對源代碼進行編輯,VI對源代碼編譯,生成目標程序,GCC將分散的模塊組成一個可執(zhí)行的整體運行編譯好的程序./+目標文件名調(diào)試運行時的錯誤GDB鏈接- continue函數(shù)庫分為靜態(tài)庫和動態(tài)庫。靜態(tài)庫:鏈接時,靜態(tài)庫的文件代碼會被拷貝到可執(zhí)行文件中。動態(tài)庫

2、:鏈接時,動態(tài)庫的代碼不會被加入可執(zhí)行文件中,而是在程序被執(zhí)行的時候加載。Linux開發(fā)工具編輯工具VI編譯工具GCC目錄Linux編程概述GCCMakefile課程實踐GCC簡介基本規(guī)則常用參數(shù)實例分析簡介1/3GCC概述gcc是一個強大的工具集合,它包含了預(yù)處理器,編譯器,匯編器,鏈接器等組件。它會在需要的時候調(diào)用其他組件。輸入文件的類型和傳遞給gcc的參數(shù)決定了gcc調(diào)用具體的哪些組件。對于開發(fā)者,它提供的足夠多的參數(shù),可以讓開發(fā)者全面控制代碼的生成,這對嵌入式系統(tǒng)級的軟件開發(fā)非常重要他可以處理C、C+、Fortan、Pascal、Objective-C、Java、Ada等。簡介2/4簡

3、介3/4GCC的歷史1984,FSF建立,GNU Project:開放系統(tǒng)支撐軟件1985,GCC項目啟動1987,GCC 1.0 release,C compiler1991,Linux項目開始發(fā)布1992,GCC2.0 release,C/C+1994,Linux1.0 release2019,EGCS。Architecture Related Optimization and C+ support2019, GCC3.0 release,EGCS Merged,Multi Languages/targets2019, GCC4.0 release,IR Enhanced2019, GCC

4、4.2 release,OpenMP support簡介4/4GCC的特點支持多種編程語言-C/C+/Fortan/JAVA可移植性強:主要采用C語言編寫交叉支持能力強Build, host and target處理器支持多X86/ia/MIPS/ARM/SPARC/應(yīng)用范圍廣高性能計算、商用服務(wù)器、PC、嵌入式系統(tǒng)模塊化設(shè)計前端+中間表示|后端,松耦合基本規(guī)則GCC的命令格式gcc options infile.c為后綴的文件,C語言源代碼文件;.o為后綴的文件,是編譯后的目標文件.s為后綴的文件,是匯編語言源代碼文件;GCC常用參數(shù)介紹1/2常用選項:-c 編譯為目標文件,不連接庫-S 編

5、譯為匯編代碼-E 預(yù)處理.預(yù)處理之后的代碼將送往標準輸出-Wwarn. 設(shè)置警告,可以設(shè)置的警告開關(guān)很多,通常用-Wall開啟所有的警告-O level :設(shè)置優(yōu)化級別,level可以是0,1,2,3或者s,默認為-O0,即不進行優(yōu)化處理.-Dname=definition: 在命令行上定義宏,有兩種方式,-Dname或者-Dname=definition. 在命令行上設(shè)置宏定義的目的主要是為了在調(diào)試的時候設(shè)定一些開關(guān),而在發(fā)布的時候再關(guān)閉或者打開這些開關(guān)即可,當(dāng)然宏定義也用來對代碼進行有選擇地編譯.另外也還有其他的一些作用.GCC常用參數(shù)介紹1/2-Uname 取消宏定義name,作用和上面

6、的正好相反.-Idir. 把dir加到頭文件的搜索路徑中,而且gcc會在搜索標準頭文件之前先搜索dir.-llibrary 在連接的時候搜索library庫.庫是一些archieve文件-其成員是目標文件.如果有文件引用library, library在命令行的位置應(yīng)該在那個文件之后,因此,越底層的庫越要放在后面.比如如果你要連接pcap庫,那么你就需要使用-lpcap對源文件進行編譯.-Ldir. 把dir加到庫文件的搜索路徑中,而且gcc會在搜索標準庫文件之前先搜索dir.-g 產(chǎn)生調(diào)試信息. GDB能夠使用這些調(diào)試信息。-o outfile 指定輸出文件的文件名,默認為a.outGCC使

7、用例子Example1(編譯一個文件)gcc -o first first.c Example2編譯兩個文件)gcc c power.cgcc c compute.cgcc power.o compute.o o power -lm目錄Linux編程概述GCCMakefile課程實踐Makefile簡介Make的語法及常用參數(shù)Makefile的基本結(jié)構(gòu)實例分析簡介1/2What is Make?Make 是用于自動編譯、鏈接程序的實用工具。是用于自動編譯、鏈接程序的實用工具。Make的優(yōu)點的優(yōu)點“自動化編譯自動化編譯”,一旦寫好,只需要一個,一旦寫好,只需要一個make命命令,整個工程完全自動

8、編譯,極大的提高了軟令,整個工程完全自動編譯,極大的提高了軟件開發(fā)的效率。件開發(fā)的效率。簡介2/2Make的工作原理當(dāng)輸入make命令之后,會默認的在當(dāng)前目錄下尋找名為“Makefile或“makefile的文件。尋找到文件之后,make會一層又一層地去找文件的依賴關(guān)系,直到最終編譯出第一個目標文件。在找尋的過程中,如果出現(xiàn)錯誤,比如最后被依賴的文件找不到,那么make就會直接退出,并報錯,而對于所定義的命令的錯誤,或是編譯不成功,make根本不理。make只管文件的依賴性,即,如果在我找了依賴關(guān)系之后,冒號后面的文件還是不在,那么對不起,我就不工作啦。 Make的語法及常用參數(shù)make的使用

9、make options target常見的選項:-f FILE 以指定的FILE 文件作為makefile。-n 只打印要執(zhí)行的命令,但不執(zhí)行這些命令。-s 在執(zhí)行命令時不顯示命令。-d 顯示調(diào)試信息Makefile的基本結(jié)構(gòu)1/2一個簡單的Makefile文件包含一系列的“規(guī)則”,其樣式如下:目的(target) : 依賴(prerequiries)命令(command)Makefile的基本結(jié)構(gòu)2/2目的(target)通常是要產(chǎn)生的文件的名稱,目標的例子是可執(zhí)行文件或OBJ文件。目標也可是一個執(zhí)行的動作名稱,這樣的目標通常稱為偽目標PHONY諸如clean 。依賴是用來輸入從而產(chǎn)生目標

10、的文件,一個目標經(jīng)常有幾個依賴。命令是Make執(zhí)行的動作,一個規(guī)則可以含有幾個命令,每個命令占一行。每個命令行前面必須是一個Tab字符,即命令行第一個字符是Tab。這是不小心容易出錯的地方。實例分析1/2Eample1編譯一個文件的makefile文件$cat makefilepower: power.cgcc power.c -o power -lm 實例分析2/2Eample2編譯兩個文件的makefile文件$cat makefilepower:power.o compute.ogcc power.o compute.o -o power -lmpower.o:power.cgcc -c

11、 power.ccompute.o:compute.cgcc -c compute.c目錄Linux編程概述GCCMakefile課程實踐課程實踐1/2Lab1:編寫一個程序,完成以下要求該程序包含3個文件,并且完成對圓的面積和周長進行計算的功能,其中每個文件包含的內(nèi)容如下:第一個文件,包含主函數(shù),提示用戶輸入半徑,并計算相應(yīng)的結(jié)果。第二個文件,包含計算圓的面積的函數(shù)第三個文件,包含計算圓的周長的函數(shù)Lab2:編寫相應(yīng)的makefile,并且編譯運行該程序課程實踐2/2Lab3:分析一下的makefile文件,并回答以下問題。CC = gccOPTIONS = -x04 oOBJECTS = main.o input.o compute.oSOURCES = main.c input.c compute.cHEADERS = main.h input.c compute.hpower:main.c $(OBJECTS)$(CC) $(OPTIONS) power $(OBJECTS) lmmain.o:main.c $(HEADERS)input.o:input.c input.hc

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論