4.Linux編程工具使用_第1頁
4.Linux編程工具使用_第2頁
4.Linux編程工具使用_第3頁
4.Linux編程工具使用_第4頁
4.Linux編程工具使用_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第四章Linux編程工具使用,本章目標(biāo),VI工具使用 Gcc 編譯過程 Gdb調(diào)試程序方法 Linux庫文件和頭文件 Makefile工具 編寫簡(jiǎn)單的makefile文件,文本編輯工具vi,什么vi :vi是Linux/Unix底下最常用的文本編輯器。 vim:vim是vi的升級(jí)版本,它不僅兼容vi的所有命令,而且還加入了一些新的特性。,vi的三種工作方式,編輯方式,光標(biāo)定位 M 移動(dòng)光標(biāo)到頁面中央 L移動(dòng)光標(biāo)到頁面尾處 H移動(dòng)光標(biāo)到頁面開始處 Ctrl+f向后翻頁 Ctrl+b向前翻頁 0移動(dòng)光標(biāo)到行首 $移動(dòng)光標(biāo)到行尾 復(fù)制 粘貼 刪除 nyy 復(fù)制光標(biāo)所在的向下n行內(nèi)容 p在光標(biāo)處粘貼復(fù)

2、制的內(nèi)容 ndd刪除光標(biāo)所在向下n行的內(nèi)容 撤銷和重復(fù) u復(fù)原前一個(gè)動(dòng)作 . 重復(fù)前一個(gè)動(dòng)作,插入方式,i和I鍵插入:在目前光標(biāo)處輸入文字,已存在的文字會(huì)向后 A和a鍵:a為從目前光標(biāo)所在的下個(gè)字符處開始插入,A為從光標(biāo)所在行的最后一個(gè)字符開始插入 O和o:在目前光標(biāo)所在下一行處插入新的一行.O為在目前光標(biāo)所在處的上一行插入新行 R和r 取代:r會(huì)取代光標(biāo)所在的那個(gè)字符:R會(huì)一直取代光標(biāo)所在的文字,直到按下ESC為止,命令方式,退出命令 q 退出vi q! 不保存退出 wq! 保存退出 搜索字符串 輸入/+要查找的字符串 按n鍵重新查找下一個(gè) shell切換 !+shell命令 如 !ls l

3、 在vi中使用ls命令 Sp +filename 在同一個(gè)vi中編輯兩個(gè)文件,gcc,什么是gcc:gcc是GNU Compiler Collection的縮寫。最初是作為C語言的編譯器,現(xiàn)在已經(jīng)支持多種語言了,如C、C+、Java、Pascal、Ada、COBOL語言等。 gcc支持多種硬件平臺(tái),甚至對(duì)Don Knuth 設(shè)計(jì)的 MMIX 這類不常見的計(jì)算機(jī)都提供了完善的支持,gcc編譯程序的過程,預(yù)處理(Pre-Processing) 編譯(Compiling) 匯編(Assembling) 鏈接(Linking),gcc編譯程序過程示意圖,gcc常用選項(xiàng),gcc示例,gcc -E hel

4、lo.c -o hello.i(預(yù)處理cpp) gcc -S hello.i -o hello.s(編譯gcc) gcc -c hello.s -o hello.o(匯編as) gcc hello.o -o hello(鏈接ld) gcc hello.c -o hello(直接編譯鏈接成可執(zhí)行文件) gcc -c hello.c或gcc -c hello.c -o hello.o(編譯生成目標(biāo)文件),頭文件與庫文件,在使用C語言和其他語言進(jìn)行程序設(shè)計(jì)的時(shí)候,我們需要頭文件來提供對(duì)常數(shù)的定義和對(duì)系統(tǒng)及庫函數(shù)調(diào)用的聲明。 庫文件是一些預(yù)先編譯好的函數(shù)集合,那些函數(shù)都是按照可重用原則編寫的。它們通常

5、由一組互相關(guān)聯(lián)的用來完成某項(xiàng)常見工作的函數(shù)構(gòu)成。比如用來處理屏幕顯示情況的函數(shù)(curses庫)和數(shù)據(jù)庫訪問例程(dbm庫)等。,頭文件與庫文件位置,/usr/include及其子目錄底下的include文件夾 /usr/local/include及其子目錄底下的include文件夾 /usr/lib /usr/local/lib,靜態(tài)庫與共享庫,靜態(tài)庫(.a):程序在編譯鏈接的時(shí)候把庫的代碼鏈接到可執(zhí)行文件中。 共享庫( .so或.sa ):程序在運(yùn)行的時(shí)候才去鏈接共享庫的代碼,多個(gè)程序共享使用庫的代碼。,gdb,什么是gdb:gdb是GNU debugger的縮寫,是編程調(diào)試工具。,gdb

6、功能,啟動(dòng)程序,可以按照用戶自定義的要求隨心所欲的運(yùn)行程序。 可讓被調(diào)試的程序在用戶所指定的調(diào)試的斷點(diǎn)處停住 (斷點(diǎn)可以是條件表達(dá)式)。 當(dāng)程序停住時(shí),可以檢查此時(shí)程序中所發(fā)生的事。 動(dòng)態(tài)地改變程序的執(zhí)行環(huán)境。,gdb用法,make工具,人們通常利用 make 工具來自動(dòng)完成編譯工作。這些工作包括:如果僅修改了某幾個(gè)源文件,則只重新編譯這幾個(gè)源文件;如果某個(gè)頭文件被修改了,則重新編譯所有包含該頭文件的源文件。利用這種自動(dòng)編譯可大大簡(jiǎn)化開發(fā)工作,避免不必要的重新編譯。,Makefile,make 工具通過一個(gè)稱為 makefile 的文件來完成并自動(dòng)維護(hù)編譯工作。makefile 需要按照某種語

7、法進(jìn)行編寫,其中說明了如何編譯各個(gè)源文件并連接生成可執(zhí)行文件,并定義了源文件之間的依賴關(guān)系。當(dāng)修改了其中某個(gè)源文件時(shí),如果其他源文件依賴于該文件,則也要重新編譯所有依賴該文件的源文件。,Makefile基本規(guī)則,TARGET : DEPENDENCIES COMMAND 目標(biāo)(TARGET)程序產(chǎn)生的文件,如可執(zhí)行文件和目標(biāo)文件;目標(biāo)也可以是要執(zhí)行的動(dòng)作,如“clean”。 依賴(DEPENDENCIES)是用來產(chǎn)生目標(biāo)的輸入文件,一個(gè)目標(biāo)通常依賴于多個(gè)文件。,Makefile基本規(guī)則,命令(COMMAND)是make執(zhí)行的動(dòng)作,一個(gè)可以有多個(gè)命令,每個(gè)占一行。注意:每個(gè)命令行的起始字符必須為

8、TAB字符! 如果DEPENDENCIES中有一個(gè)或多個(gè)文件更新的話,COMMAND就要執(zhí)行,這就是Makefile最核心的內(nèi)容,最簡(jiǎn)單的Makefile例子,main:main.o add.o subtract.o gcc main.o add.o subtract.o -o main main.o:main.c add.h subtract.h gcc -c main.c -o main.o add.o:add.c add.h gcc -c add.c -o add.o subtract.o:subtract.c subtract.h gcc -c subtract.c -o subtract.o clean: rm -f m

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論