




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、嵌入式Linux應(yīng)用程序開發(fā)標準教程三 Linux下的C編程基礎(chǔ)第三章 Linux 下的C 編程基礎(chǔ)本章目標熟悉Linux 系統(tǒng)下開發(fā)環(huán)境熟悉gcc 編譯器基本原理熟練使用gcc 編譯器常用選項熟練使用gdb 調(diào)試技術(shù)熟悉Makefile 基本原理及語法規(guī)范熟練使用autoconf 和automake 生成Makefile嵌入式Linux應(yīng)用程序開發(fā)標準教程3.1 Linux下C語言編程概述3.1.1 C 語言簡單回顧ANSI C硬件無關(guān)性中級語言結(jié)構(gòu)化語言功能齊全可移植性強編譯過程示意圖嵌入式Linux應(yīng)用程序開發(fā)標準教程3.1 Linux下C語言編程概述3.1.2 Linux 下C 語言編
2、程環(huán)境概述編輯器vi編譯鏈接器gcc調(diào)試器gdb項目管理工具make嵌入式Linux應(yīng)用程序開發(fā)標準教程3.3 gcc編譯器gcc編譯器版本GNU Compiler CollectionGNU CC 4.6.2 (2011.10.26)GNU CC 4.6.3GCC 4.3.0 GCC 2.95 July 31, 1999 GCC 3.0 June 18, 2001 GCC 3.2 August 14, 2002 GCC 3.3May 13, 2003 December 3, 1997 GCC 4.4.5 GCC 4.6.3Oct 26, 2011嵌入式Linux應(yīng)用程序開發(fā)標準教程3.3 g
3、cc編譯器gcc編譯環(huán)境GNU CC ANSI CC、C+、Object C、Java、Fortran、Pascal后綴名 所對應(yīng)的語言 后綴名 所對應(yīng)的語言 .c C 原始程序 .s/.S 匯編語言原始程序 .C/.cc/.cxx C+ 原始程序 .h 預(yù)處理文件(頭文件) .m Objective-C 原始程序 .o 目標文件 .i 已經(jīng)過預(yù)處理的C 原始程序 .a/.so 編譯后的庫文件 .ii 已經(jīng)過預(yù)處理的C+ 原始程序 嵌入式Linux應(yīng)用程序開發(fā)標準教程3.3 gcc編譯器3.3.1 gcc 編譯流程解析gcc編譯過程格式: gcc 選項 源文件 選項 目標文件Pre-proce
4、ssor(cpp / gcc -E)Compiler(cc1 / gcc -S)Assembler(as / gcc -c)Linker(ld)hello.c(text)hello.i(text)hello.s(text)hello.o(binary)hello(binary)printf.o(binary)預(yù)處理:生成文件編譯文件.i編譯:代碼翻譯成匯編語言編譯文件.s匯編:轉(zhuǎn)成目標文件編譯文件.o二進制代碼連接:默認使用動態(tài)庫,生成可執(zhí)行文件嵌入式Linux應(yīng)用程序開發(fā)標準教程3.3 gcc編譯器3.3.2 gcc 編譯選項分析(1)總體選項選項 含義 -c 只是編譯不鏈接,生成目標文件“
5、.o” -S 只是編譯不匯編,生成匯編代碼 -E 只進行預(yù)編譯,不做其他處理 -g 在可執(zhí)行程序中包含標準調(diào)試信息 -o file 把輸出文件輸出到file 里 -v 打印出編譯器內(nèi)部編譯各過程的命令行信息和編譯器的版本 -I dir 在頭文件的搜索路徑列表中添加dir 目錄 -L dir 在庫文件的搜索路徑列表中添加dir 目錄 -static 鏈接靜態(tài)庫 -llibrary 連接名為library 的庫文件 嵌入式Linux應(yīng)用程序開發(fā)標準教程3.3 gcc編譯器3.3.2 gcc 編譯選項分析(2)警告和出錯選項選項含義 -ansi 支持符合ANSI 標準的C 程序 -pedantic
6、允許發(fā)出ANSI C 標準所列的全部警告信息 -pedantic-error 允許發(fā)出ANSI C 標準所列的全部錯誤信息 -w 關(guān)閉所有告警 -Wall 允許發(fā)出gcc 提供的所有有用的報警信息 -werror 把所有的告警信息轉(zhuǎn)化為錯誤信息,并在告警發(fā)生時終止編譯過程 (3)優(yōu)化選項-On 來控制優(yōu)化代碼的生成,0、1、2、3調(diào)試的時候最好不使用任何優(yōu)化選項,只有當程序在最終發(fā)行的時候才考慮對其進行優(yōu)化嵌入式Linux應(yīng)用程序開發(fā)標準教程3.4 gdb調(diào)試器3.4.1 gdb 使用流程gcc 編譯過程一定要加上選項“-g”gdb 調(diào)試可執(zhí)行文件查看文件 l設(shè)置斷點 b nb n if va
7、r=20查看斷點情況 info b運行代碼 r查看變量值 p + 變量名單步運行 n s恢復(fù)程序運行 c嵌入式Linux應(yīng)用程序開發(fā)標準教程3.4 gdb調(diào)試器3.4.2 gdb 基本命令help1工作環(huán)境相關(guān)命令2設(shè)置斷點與恢復(fù)命令函數(shù)斷點條件斷點3gdb 中源碼查看相關(guān)命令4gdb 中查看運行數(shù)據(jù)相關(guān)命令5gdb 中修改運行參數(shù)相關(guān)命令實驗:用gdb調(diào)試程序的bug,P87嵌入式Linux應(yīng)用程序開發(fā)標準教程3.5 Make工程管理器自動編譯管理器通過讀入Makefile 文件的內(nèi)容來執(zhí)行大量編譯工作用戶只需編寫一次簡單的編譯語句3.5.1 Makefile 基本結(jié)構(gòu)Makefile 是M
8、ake 讀入的唯一配置文件需要由make工具創(chuàng)建的目標體(target),通常是目標文件或可執(zhí)行文件要創(chuàng)建的目標體所依賴的文件(dependency_file)創(chuàng)建每個目標體時需要運行的命令(command)嵌入式Linux應(yīng)用程序開發(fā)標準教程3.5 Make工程管理器3.5.1 Makefile 基本結(jié)構(gòu)Makefile 格式target: dependency_files commandMake 格式make target示例:hello.o: hello.c hello.h gcc c hello.c o hello.omake hello.o嵌入式Linux應(yīng)用程序開發(fā)標準教程3.5
9、Make工程管理器3.5.2 Makefile 變量時間戳make 允許在Makefile 中創(chuàng)建和使用變量變量是在Makefile 中定義的名字,用來代替一個文本字符串,該文本字符串稱為該變量的值可以代替目標體、依賴文件、命令以及makefile 文件中其他部分兩種變量定義方式遞歸展開方式,格式為VAR=var簡單展開方式:定義格式為VAR:=varMake 中變量格式為$(VAR)嵌入式Linux應(yīng)用程序開發(fā)標準教程3.5 Make工程管理器3.5.2 Makefile 變量預(yù)定義變量命令格式含 義 AR 庫文件維護程序的名稱,默認值為ar AS 匯編程序的名稱,默認值為as CC C編譯
10、器的名稱,默認值為cc CPP C預(yù)編譯器的名稱,默認值為$(CC) E CXX C+編譯器的名稱,默認值為g+ FC FORTRAN編譯器的名稱,默認值為f77 RM 文件刪除程序的名稱,默認值為rm f ARFLAGS 庫文件維護程序的選項,無默認值 ASFLAGS 匯編程序的選項,無默認值 CFLAGS C編譯器的選項,無默認值 CPPFLAGS C預(yù)編譯的選項,無默認值 CXXFLAGS C+編譯器的選項,無默認值 FFLAGS FORTRAN編譯器的選項,無默認值 嵌入式Linux應(yīng)用程序開發(fā)標準教程3.5 Make工程管理器3.5.2 Makefile 變量Makefile中常見自
11、動變量命令格式含 義 $* 不包含擴展名的目標文件名稱 $+ 所有的依賴文件,以空格分開,并以出現(xiàn)的先后為序,可能包含重復(fù)的依賴文件 $ 第一個依賴文件的名稱 $? 所有時間戳比目標文件晚的依賴文件,并以空格分開 $ 目標文件的完整名稱 $ 所有不重復(fù)的依賴文件,以空格分開 $% 如果目標是歸檔成員,則該變量表示目標的歸檔成員名稱 嵌入式Linux應(yīng)用程序開發(fā)標準教程3.5 Make 工程管理器3.5.3 Makefile 規(guī)則1隱式規(guī)則2模式規(guī)則 %隱式規(guī)則目錄 對應(yīng)語言后綴名 規(guī)則 C編譯:.c變?yōu)?o $(CC) c $(CPPFLAGS) $(CFLAGS) C+編譯:.cc或.C變?yōu)?o $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) Pascal編譯:.p變?yōu)?o $(PC) -c $(PFLAGS) Fortran編譯:.r變?yōu)?o $(FC) -c $(FFLAGS) 嵌入式Linux應(yīng)用程序開發(fā)標準教程3.6 Make工程管理器3.5.4 Make管理器的使用常用的命令行選項實驗:編寫包含多文件的Makefile,P89命令格式含 義
溫馨提示
- 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)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 三農(nóng)村教育事業(yè)發(fā)展規(guī)劃
- 光伏發(fā)電行業(yè)發(fā)展狀況分析
- 消費級無人機行業(yè)分析
- 中級養(yǎng)老護理復(fù)習(xí)測試卷含答案
- 婦產(chǎn)科護理復(fù)習(xí)試題含答案(二)
- 時尚搭配指南表格
- 農(nóng)業(yè)生產(chǎn)網(wǎng)絡(luò)營銷策略與技巧
- 農(nóng)業(yè)休閑旅游產(chǎn)業(yè)可持續(xù)發(fā)展研究報告
- 項目進展會議重要事項紀要
- 智能財稅綜合實訓(xùn) 下篇 第四章工作領(lǐng)域二-任務(wù)三
- GB/T 4154-1993氧化鑭
- 水泥混凝土路面試驗檢測的要點
- 運輸供應(yīng)商年度評價表
- 室內(nèi)消防及給排水管道安裝施工方案方案
- 無創(chuàng)呼吸機參數(shù)調(diào)節(jié)課件
- 《過零丁洋》公開課件
- 文件傳閱單范本
- 電工培養(yǎng)計劃表
- 部編版五年級道德與法治下冊課程綱要
- Q∕SY 02006-2016 PVT取樣技術(shù)規(guī)程
- 初中物理公式MicrosoftWord文檔
評論
0/150
提交評論