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ù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

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

3、 他可以處理C、C+、Fortan、Pascal、Objective-C、Java、Ada等。,簡介2/4,簡介3/4,GCC的歷史 1984,FSF建立,GNU Project:開放系統(tǒng)支撐軟件 1985,GCC項目啟動 1987,GCC 1.0 release,C compiler 1991,Linux項目開始發(fā)布 1992,GCC2.0 release,C/C+ 1994,Linux1.0 release 1997,EGCS。Architecture Related Optimization and C+ support 2001, GCC3.0 release,EGCS Merged,

4、Multi Languages/targets 2005, GCC4.0 release,IR Enhanced 2007, GCC4.2 release,OpenMP support,簡介4/4,GCC的特點 支持多種編程語言 -C/C+/Fortan/JAVA 可移植性強:主要采用C語言編寫 交叉支持能力強 Build, host and target 處理器支持多 X86/ia/MIPS/ARM/SPARC/ 應用范圍廣 高性能計算、商用服務器、PC、嵌入式系統(tǒng) 模塊化設計 前端+中間表示|后端,松耦合,基本規(guī)則,GCC的命令格式 gcc options infile. .c為后綴的文件

5、,C語言源代碼文件; .o為后綴的文件,是編譯后的目標文件 .s為后綴的文件,是匯編語言源代碼文件;,GCC常用參數介紹1/2,常用選項: -c 編譯為目標文件,不連接庫 -S 編譯為匯編代碼 -E 預處理.預處理之后的代碼將送往標準輸出 -Wwarn. 設置警告,可以設置的警告開關很多,通常用-Wall開啟所有的警告 -O level :設置優(yōu)化級別,level可以是0,1,2,3或者s,默認為-O0,即不進行優(yōu)化處理. -Dname=definition: 在命令行上定義宏,有兩種方式,-Dname或者-Dname=definition. 在命令行上設置宏定義的目的主要是為了在調試的時候設

6、定一些開關,而在發(fā)布的時候再關閉或者打開這些開關即可,當然宏定義也用來對代碼進行有選擇地編譯.另外也還有其他的一些作用.,GCC常用參數介紹1/2,-Uname 取消宏定義name,作用和上面的正好相反. -Idir. 把dir加到頭文件的搜索路徑中,而且gcc會在搜索標準頭文件之前先搜索dir. -llibrary 在連接的時候搜索library庫.庫是一些archieve文件-其成員是目標文件.如果有文件引用library, library在命令行的位置應該在那個文件之后,因此,越底層的庫越要放在后面.比如如果你要連接pcap庫,那么你就需要使用-lpcap對源文件進行編譯. -Ldir.

7、 把dir加到庫文件的搜索路徑中,而且gcc會在搜索標準庫文件之前先搜索dir. -g 產生調試信息. GDB能夠使用這些調試信息。 -o outfile 指定輸出文件的文件名,默認為a.out,GCC使用例子,Example1(編譯一個文件) gcc -o first first.c Example2(編譯兩個文件) gcc c power.c gcc c compute.c gcc power.o compute.o o power -lm,目錄,Linux編程概述 GCC Makefile 課程實踐,Makefile,簡介 Make的語法及常用參數 Makefile的基本結構 實例分析,

8、簡介1/2,What is Make? Make 是用于自動編譯、鏈接程序的實用工具。 Make的優(yōu)點 “自動化編譯”,一旦寫好,只需要一個make命令,整個工程完全自動編譯,極大的提高了軟件開發(fā)的效率。,簡介2/2,Make的工作原理 當輸入make命令之后,會默認的在當前目錄下尋找名為“Makefile”或“makefile”的文件。 尋找到文件之后,make會一層又一層地去找文件的依賴關系,直到最終編譯出第一個目標文件。在找尋的過程中,如果出現(xiàn)錯誤,比如最后被依賴的文件找不到,那么make就會直接退出,并報錯,而對于所定義的命令的錯誤,或是編譯不成功,make根本不理。make只管文件的

9、依賴性,即,如果在我找了依賴關系之后,冒號后面的文件還是不在,那么對不起,我就不工作啦。,Make的語法及常用參數,make的使用 make options target 常見的選項: -f FILE 以指定的FILE 文件作為makefile。 -n 只打印要執(zhí)行的命令,但不執(zhí)行這些命令。 -s 在執(zhí)行命令時不顯示命令。 -d 顯示調試信息,Makefile的基本結構1/2,一個簡單的Makefile文件包含一系列的“規(guī)則”,其樣式如下: 目標(target) : 依賴(prerequiries) 命令(command),Makefile的基本結構2/2,目標(target)通常是要產生的文

10、件的名稱,目標的例子是可執(zhí)行文件或OBJ文件。目標也可是一個執(zhí)行的動作名稱,這樣的目標通常稱為偽目標(PHONY)諸如clean 。 依賴是用來輸入從而產生目標的文件,一個目標經常有幾個依賴。 命令是Make執(zhí)行的動作,一個規(guī)則可以含有幾個命令,每個命令占一行。 每個命令行前面必須是一個Tab字符,即命令行第一個字符是Tab。這是不小心容易出錯的地方。,實例分析1/2,Eample1 編譯一個文件的makefile文件 $cat makefile power:power.c gcc power.c -o power -lm,實例分析2/2,Eample2 編譯兩個文件的makefile文件 $

11、cat makefile power:power.o compute.o gcc power.o compute.o -o power -lm power.o:power.c gcc -c power.c compute.o:compute.c gcc -c compute.c,目錄,Linux編程概述 GCC Makefile 課程實踐,課程實踐1/2,Lab1:編寫一個程序,完成以下要求 該程序包含3個文件,并且完成對圓的面積和周長進行計算的功能,其中每個文件包含的內容如下: 第一個文件,包含主函數,提示用戶輸入半徑,并計算相應的結果。 第二個文件,包含計算圓的面積的函數 第三個文件,包含

12、計算圓的周長的函數 Lab2:編寫相應的makefile,并且編譯運行該程序,課程實踐2/2,Lab3:分析一下的makefile文件,并回答以下問題。 CC = gcc OPTIONS = -x04 o OBJECTS = main.o input.o compute.o SOURCES = main.c input.c compute.c HEADERS = main.h input.c compute.h power:main.c $(OBJECTS) $(CC) $(OPTIONS) power $(OBJECTS) lm main.o:main.c $(HEADERS) input.o:input.c input.h compute.o:c

溫馨提示

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

評論

0/150

提交評論