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

下載本文檔

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

文檔簡(jiǎn)介

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

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

3、介3/4GCC的歷史1984,FSF建立,GNU Project:開放系統(tǒng)支撐軟件1985,GCC項(xiàng)目啟動(dòng)1987,GCC 1.0 release,C compiler1991,Linux項(xiàng)目開始發(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簡(jiǎn)介4/4GCC的特點(diǎn)支持多種編程語(yǔ)言-C/C+/Fortan/JAVA可移植性強(qiáng):主要采用C語(yǔ)言編寫交叉支持能力強(qiáng)Build, host and target處理器支持多X86/ia/MIPS/ARM/SPARC/應(yīng)用范圍廣高性能計(jì)算、商用服務(wù)器、PC、嵌入式系統(tǒng)模塊化設(shè)計(jì)前端+中間表示|后端,松耦合基本規(guī)則GCC的命令格式gcc options infile.c為后綴的文件,C語(yǔ)言源代碼文件;.o為后綴的文件,是編譯后的目標(biāo)文件.s為后綴的文件,是匯編語(yǔ)言源代碼文件;GCC常用參數(shù)介紹1/2常用選項(xiàng):-c 編譯為目標(biāo)文件,不連接庫(kù)-S 編

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

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

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

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

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

10、的文件,一個(gè)目標(biāo)經(jīng)常有幾個(gè)依賴。命令是Make執(zhí)行的動(dòng)作,一個(gè)規(guī)則可以含有幾個(gè)命令,每個(gè)命令占一行。每個(gè)命令行前面必須是一個(gè)Tab字符,即命令行第一個(gè)字符是Tab。這是不小心容易出錯(cuò)的地方。實(shí)例分析1/2Eample1編譯一個(gè)文件的makefile文件$cat makefilepower: power.cgcc power.c -o power -lm 實(shí)例分析2/2Eample2編譯兩個(gè)文件的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課程實(shí)踐課程實(shí)踐1/2Lab1:編寫一個(gè)程序,完成以下要求該程序包含3個(gè)文件,并且完成對(duì)圓的面積和周長(zhǎng)進(jìn)行計(jì)算的功能,其中每個(gè)文件包含的內(nèi)容如下:第一個(gè)文件,包含主函數(shù),提示用戶輸入半徑,并計(jì)算相應(yīng)的結(jié)果。第二個(gè)文件,包含計(jì)算圓的面積的函數(shù)第三個(gè)文件,包含計(jì)算圓的周長(zhǎng)的函數(shù)Lab2:編寫相應(yīng)的makefile,并且編譯運(yùn)行該程序課程實(shí)踐2/2Lab3:分析一下的makefile文件,并回答以下問(wèn)題。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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論