




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、操作系統(tǒng)試驗(yàn)(2) Linux編程環(huán)境,2011-03,課程內(nèi)容,編輯器VI 編譯工具GCC 代碼調(diào)試工具GDB 項(xiàng)目管理工具M(jìn)ake,Linux開發(fā)環(huán)境,編輯器VI,visual interface,可視化編輯器 vi可以執(zhí)行輸出、刪除、查找、替換、塊操作等眾多文本操作,而且用戶可以根據(jù)自己的需要對其進(jìn)行定制. 只是一個文本編輯器,不能排版 vi沒有菜單,只有命令,命令模式,在該模式下可以通過移動光標(biāo)進(jìn)行“刪除字符”、“字符串查找”,也可以完成“復(fù)制”,“粘貼”與“剪切”的操作,但無法編輯文字。 在shell下輸入“VI”或“VI 文件名”就進(jìn)入了命令模式。,1、移動光標(biāo),移動光標(biāo)h、j、k
2、、l:分別控制光標(biāo)左、下、上、右移一格。 :移動到行首 ; $:移動到行尾; Ctrl+b: 上滾一屏。 Ctrl+f: 下滾一屏。 Ctrl+d: 下滾半屏。 Ctrl+u: 上滾半屏。 G: 移到文件最后。nG:移動第n行 w: 移到下個字的開頭。 b: 跳至上個字的開頭。,x: 刪除當(dāng)前光標(biāo)所在后面一個字符。 nx: 刪除當(dāng)前光標(biāo)所在后面n個字符。例如,5x表示刪除5個字符。 dd: 刪除當(dāng)前光標(biāo)所在行。 ndd:刪除當(dāng)前光標(biāo)所在后面n行。例如,5dd表示刪除自光標(biāo)算起的5行。 :n,md:刪除從n行到第M行的內(nèi)容 例如,:1,12d表示刪除自行1至行12的文字。 X: 刪當(dāng)前光標(biāo)的左字
3、符。 D: 刪至行尾。,2、刪除,3、復(fù)制,yw: 拷貝光標(biāo)處的字到字尾至緩沖區(qū)。 P: 把緩沖區(qū)的資料貼上來。 yy: 拷貝光標(biāo)所在之行至緩沖區(qū)。 nyy: 例如,5yy,拷貝光標(biāo)所在之處以下5行至緩沖區(qū)。,4. 復(fù)原,u: 復(fù)原至上一操作。,/word:由首至尾尋找“word”字符串,按n可往下繼續(xù)找。 ?word:由尾至首尋找“word”字符串,按N可往前繼續(xù)找。,5. 查找字符串,6.重復(fù)操作,.:重復(fù)上一次的操作,7.退出,ZZ:保存推出,末行命令方式,在編輯方式下輸入“ :”,就進(jìn)入末行模式 :w 存盤 :q 退出(在未做修改的情況下退出) :wq 存盤并退出 :q! 強(qiáng)行退出:w
4、q! 強(qiáng)行存盤退出:w file將編輯的內(nèi)容寫到 file 文件中去 :set nu: 顯示行號 :n,ms/old/new/g 將文件中第n行到m行內(nèi)的所有的old改成new,GCC編譯器,gcc是一個強(qiáng)大的工具集合,它包含了預(yù)處理器,編譯器,匯編器,鏈接器等組件。它會在需要的時候調(diào)用其他組件。輸入文件的類型和傳遞給gcc的參數(shù)決定了gcc調(diào)用具體的哪些組件。 對于開發(fā)者,它提供的足夠多的參數(shù),可以讓開發(fā)者全面控制代碼的生成,這對嵌入式系統(tǒng)級的軟件開發(fā)非常重要,GCC編譯器(cont.),GCC編譯流程 GCC的編譯流程分為4個步驟,分別為: (1)預(yù)處理(Pre-Processing);
5、在該階段,編譯器分析處理源代碼文件中的各種宏指令,如include,if等。 (2)編譯(Compiling); 在該階段,GCC首先要檢查代碼的規(guī)范性、是否有語法錯誤等,在檢查無誤后,GCC把代碼翻譯為匯編語言。,GCC編譯器(cont.),(3)匯編(Assembling); 在該階段,編譯器把編譯生成的匯編代碼轉(zhuǎn)成二進(jìn)制目標(biāo)代碼。 (4)鏈接(Linking)。 在該階段,編譯器把匯編階段生成的二進(jìn)制代碼、程序中用到的庫文件鏈接起來,生成可執(zhí)行文件。 函數(shù)庫分為靜態(tài)庫和動態(tài)庫。 靜態(tài)庫:在鏈接時,靜態(tài)庫的文件代碼會被拷貝到可執(zhí)行文件中。 動態(tài)庫:鏈接時,動態(tài)庫的代碼不會被加入可執(zhí)行文件中
6、,而是在程序被執(zhí)行的時候加載。,GCC編譯器(cont.),GCC的常用選項(xiàng) GCC的命令行格式:gcc options infile. 常用選項(xiàng): -c 編譯為目標(biāo)文件,不連接庫 -S 編譯為匯編代碼 -E 預(yù)處理.預(yù)處理之后的代碼將送往標(biāo)準(zhǔn)輸出 -Wwarn. 設(shè)置警告,可以設(shè)置的警告開關(guān)很多,通常用-Wall開啟所有的警告,GCC編譯器(cont.),-O level :設(shè)置優(yōu)化級別,level可以是0,1,2,3或者s,默認(rèn)為-O0,即不進(jìn)行優(yōu)化處理. -Dname=definition: 在命令行上定義宏,有兩種方式,-Dname或者-Dname=definition.在命令行上設(shè)置
7、宏定義的目的主要是為了在調(diào)試的時候設(shè)定一些開關(guān),而在發(fā)布的時候再關(guān)閉或者打開這些開關(guān)即可,當(dāng)然宏定義也用來對代碼進(jìn)行有選擇地編譯.另外也還有其他的一些作用.,GCC編譯器(cont.),-Uname 取消宏定義name,作用和上面的正好相反. -Idir. 把dir加到頭文件的搜索路徑中,而且gcc會在搜索標(biāo)準(zhǔn)頭文件之前先搜索dir. -llibrary 在連接的時候搜索library庫.庫是一些archieve文件-其成員是目標(biāo)文件.如果有文件引用library,library在命令行的位置應(yīng)該在那個文件之后,因此,越底層的庫越要放在后面.比如如果你要連接pcap庫,那么你就需要使用-lpc
8、ap對源文件進(jìn)行編譯. -Ldir. 把dir加到庫文件的搜索路徑中,而且gcc會在搜索標(biāo)準(zhǔn)庫文件之前先搜索dir.,GCC編譯器(cont.),-g 產(chǎn)生調(diào)試信息. GDB能夠使用這些調(diào)試信息。 -o outfile 指定輸出文件的文件名,默認(rèn)為a.out,GDB調(diào)試器,Gdb是一款GNU開發(fā)組織并發(fā)布的UNIX/Linux下的程序調(diào)試工具。它使你能在程序運(yùn)行時觀察程序的內(nèi)部結(jié)構(gòu)和內(nèi)存的使用情況. 以下是 gdb 所提供的一些功能: 它使你能監(jiān)視你程序中變量的值. 它使你能設(shè)置斷點(diǎn)以使程序在指定的代碼行上停止執(zhí)行. 它使你能一行行的執(zhí)行你的代碼.,GDB調(diào)試器(cont.),Gdb的使用方法
9、: Gdb option executable-filecore-file or process-id gdb命令. gdb命令分為12類,有上百條命令。,加載和退出命令,gdb filename:在shell下直接加載文件進(jìn)行調(diào)試 file filename:在gdb下通過file命令加載程序進(jìn)行調(diào)試 kill:終止正在調(diào)試的程序 quit:退出gdb調(diào)試環(huán)境,斷點(diǎn)控制,break 函數(shù)名 或 行號 if 條件 Info break :顯示程序中設(shè)置的斷點(diǎn); delete breakpoint 斷點(diǎn)號:刪除指定的斷點(diǎn) clear 斷點(diǎn)號:作用同上 disable breakpoint 斷點(diǎn)號
10、:禁用指定的斷點(diǎn) enable breakpoint 斷點(diǎn)號:允許指定的斷點(diǎn),程序的控制指令,run:程序開始執(zhí)行,一直運(yùn)行到斷點(diǎn)才終止; Continue:運(yùn)行到下一個斷點(diǎn); Next:運(yùn)行下一條指令; Step:運(yùn)行下一條指令;,變量、參數(shù)的設(shè)置與查看,list:列出產(chǎn)生執(zhí)行文件的源代碼的一部分. watch 變量名:當(dāng)變量改變時,顯示變量修改前后的值; print 變量名:打印變量值; whatis 變量名或函數(shù)名:顯示變量或函數(shù)的類型; Ptype:顯示數(shù)據(jù)結(jié)構(gòu)的定義; set args:設(shè)置程序的運(yùn)行參數(shù); Show args:顯示程序的運(yùn)行參數(shù);,工程管理器 Make,Make 是
11、用于自動編譯、鏈接程序的實(shí)用工具。在開發(fā)一個項(xiàng)目時,通常是將項(xiàng)目分成許多功能模塊,每個功能模塊又可能被分成許多子模塊,而這些子模塊一般就是一個程序文件。小的項(xiàng)目通常都有十幾個或者幾十個文件,而大的項(xiàng)目則會有上百個甚至上千個文件。如果要一個一個的編譯每個文件,這個工作是非常繁瑣的,使用make 后就不需要手工的編譯每個程序文件。除了要寫一個makefile 文件外,通常所需要做的事情就是在命令行敲入“make”,然后所有的事情都由make 來完成。,工程管理器 Make(cont.),make的使用 usage:make options target 常見的選項(xiàng): -f FILE以指定的 FIL
12、E 文件作為 makefile。 -n只打印要執(zhí)行的命令,但不執(zhí)行這些命令。 -s在執(zhí)行命令時不顯示命令。,工程管理器 Make(cont.),makefile的宗旨就是讓編譯器知道要編譯一個文件需要依賴其他的哪些文件。當(dāng)那些依賴文件有了改變,編譯器會自動的發(fā)現(xiàn)最終的生成文件已經(jīng)過時,而重新編譯相應(yīng)的模塊。 默認(rèn)情況下,GNU make 工具在當(dāng)前工作目錄中按如下順序搜 makefile: GNUmakefile Makefile,工程管理器 Make(cont.),Makefile的基本結(jié)構(gòu) 一個簡單的Makefile文件包含一系列的“規(guī)則”,其樣式如下:目標(biāo)(target) : 依賴(pr
13、erequiries)命令(command) 目標(biāo)(target)通常是要產(chǎn)生的文件的名稱,目標(biāo)的例子是可執(zhí)行文件或OBJ文件。目標(biāo)也可是一個執(zhí)行的動作名稱,這樣的目標(biāo)通常稱為偽目標(biāo)(PHONY)諸如clean 。依賴是用來輸入從而產(chǎn)生目標(biāo)的文件,一個目標(biāo)經(jīng)常有幾個依賴。,工程管理器 Make(cont.),命令是Make執(zhí)行的動作,一個規(guī)則可以含有幾個命令,每個命令占一行。 注意:每個命令行前面必須是一個Tab字符,即命令行第一個字符是Tab。這是不小心容易出錯的地方。,工程管理器 Make(cont.),試驗(yàn)一:,)使用VI編輯器,將以下代碼輸入到名為greet.c的文件中,使用GCC編譯
14、該程序并執(zhí)行程序; )此代碼的愿意為將main函數(shù)中定義的字符串倒序輸出,執(zhí)行后,發(fā)現(xiàn)結(jié)果顯示沒有輸出,使用分析程序錯誤的原因,并修改程序,以達(dá)到程序預(yù)先的目的,#include int display1(char * string); int display2(char * string); int main() char string=“informaiton security”; display1(string); display2(string); int display1(char* string) printf(“the orginal string is %sn”,string); ,int display2(char * string1) char * string2; int size,i; size = strlen(string1); string2 =(
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年廢舊電子產(chǎn)品回收利用產(chǎn)業(yè)鏈綠色轉(zhuǎn)型路徑研究
- 數(shù)字貨幣如何影響2025年貨幣政策傳導(dǎo)效果報告001
- 施工質(zhì)量保障體系分析
- 稀土摻雜含鈮酸鹽晶相玻璃陶瓷的結(jié)構(gòu)與性能研究
- PD-1抑制劑治療老年晚期非小細(xì)胞肺癌的療效及安全性分析
- 儒家兒童思想視域下兒童哲學(xué)教育研究
- 再生混凝土骨料-瀝青界面粘結(jié)特性及調(diào)控機(jī)理研究
- 溶劑重結(jié)晶對植物甾醇純化效果影響及工藝研究
- 基于深度學(xué)習(xí)的果園環(huán)境下蘋果檢測技術(shù)研究
- 4個大白菜品種在不同鹽鈣脅迫下的干燒心鑒定及生理分析
- 2025年第九屆“學(xué)憲法、講憲法”活動知識競賽測試題庫及答案
- 采棉機(jī)操作手冊和維護(hù)指南
- 放射狀角膜切開術(shù)并發(fā)癥的長期隨訪研究-全面剖析
- Excel表格公式培訓(xùn)
- 2025年山西省華遠(yuǎn)國際陸港集團(tuán)有限公司招聘筆試參考題庫含答案解析
- 塞爾維亞語教學(xué)與學(xué)習(xí)作業(yè)指導(dǎo)書
- 農(nóng)商銀行貸款合同電子版
- 翼狀胬肉術(shù)后護(hù)理
- 關(guān)于麻將館的創(chuàng)業(yè)計(jì)劃書
- 《目視化管理》課件
- ERP車間管理模塊操作培訓(xùn)手冊
評論
0/150
提交評論