linux程序設(shè)計(jì)基礎(chǔ)-3_第1頁(yè)
linux程序設(shè)計(jì)基礎(chǔ)-3_第2頁(yè)
linux程序設(shè)計(jì)基礎(chǔ)-3_第3頁(yè)
linux程序設(shè)計(jì)基礎(chǔ)-3_第4頁(yè)
linux程序設(shè)計(jì)基礎(chǔ)-3_第5頁(yè)
已閱讀5頁(yè),還剩31頁(yè)未讀, 繼續(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 下程序設(shè)計(jì)基礎(chǔ) Email:Linux 程序設(shè)計(jì)編輯器的使用編譯器的使用調(diào)試程序的方法編輯器的使用Vim編輯器Vim是Linux最基本的文本編輯工具。用戶如果使用vi進(jìn)行編輯,可以在系統(tǒng)提示符下輸入:如果文件名存在則打開文件,否則建立一個(gè)新的文本文件userlinux $ vi fileVim編輯器的使用Vim編輯器的工作模式編輯模式 插入模式 命令模式 Vim編輯器的使用鍵鍵I鍵自動(dòng)返回shell提示符命令模式插入模式末行模式啟動(dòng)vi退出viVim編輯器的使用命令模式移動(dòng)光標(biāo)、刪除文字、復(fù)制或粘貼文字 。不能編輯文本Vim編輯器的使用命令含義x刪除光標(biāo)所指向的當(dāng)前字符 nx 刪除

2、光標(biāo)所指向的前 n 個(gè)字符dd 刪除光標(biāo)所在行,并去除空隙 ndd刪除 n 行內(nèi)容,并去除空隙 小寫字母 p將緩沖區(qū)的內(nèi)容粘貼到光標(biāo)的后面 大寫字母 P將緩沖區(qū)的內(nèi)容粘貼到光標(biāo)的前面 yy 復(fù)制當(dāng)前行到內(nèi)存緩沖區(qū)nyy復(fù)制 n 行內(nèi)容到內(nèi)存緩沖區(qū) u 撤消前一條命令的結(jié)果 命令模式下常用命令Vim編輯器的使用插入模式:插入模式下用戶可以對(duì)文件進(jìn)行輸入。Vim編輯器的使用末行模式 在末行模式下鍵入“:”,光標(biāo)就跳到屏幕最后一行,并在那里顯示冒號(hào),此時(shí)已進(jìn)入末行模式Vim編輯器的使用q在未作修改的情況下退出 q!放棄所有修改,退出編輯程序 :w 將編輯的內(nèi)容寫入原始文件,用來保存編輯的中間結(jié)果 :

3、w file file 將編輯的內(nèi)容寫入 file 文件,保持原有文件的內(nèi)容不變 :wq 將編輯的內(nèi)容寫入原始文件并退出編輯程序 命令模式下常用命令其它編輯器regdit Linux下編譯器在為L(zhǎng)inux開發(fā)應(yīng)用程序時(shí),絕大多數(shù)情況下使用的都是C語(yǔ)言,因此幾乎每一位Linux程序員面臨的首要問題都是如何靈活運(yùn)用C編譯器.目前Linux下最常用的C語(yǔ)言編譯器是GCC。gcc簡(jiǎn)介 gcc 是 GNU 的 C 和 C+ 編譯器。實(shí)際上,gcc 能夠編譯多種語(yǔ)言:C、C+ 和 Object C等。利用 gcc 命令可同時(shí)編譯并連接 C 和 C+ 源程序。也可以對(duì)幾個(gè) C 源文件利用 gcc 編譯、連接

4、并生成可執(zhí)行文件。gcc可以使程序員靈活地控制編譯過程。編譯過程一般可以分為下面四個(gè)階段,每個(gè)階段分別調(diào)用不同的工具進(jìn)行處理預(yù)處理鏈接編譯組譯源程序(*.c)可執(zhí)行文件預(yù)處理器編譯器組譯器連接器gcc的四個(gè)階段命令gcc首先調(diào)用cpp進(jìn)行預(yù)處理,在預(yù)處理過程中,對(duì)源代碼文件中的文件包含(include)、預(yù)編譯語(yǔ)句(如宏定義define等)進(jìn)行分析。接著調(diào)用cc1進(jìn)行編譯,這個(gè)階段根據(jù)輸入文件生成以.o為后綴的目標(biāo)文件。匯編過程是針對(duì)匯編語(yǔ)言的步驟,調(diào)用as進(jìn)行工作,一般來講,.S或.s為后綴的匯編語(yǔ)言源代碼文件匯編之后都生成以.o為后綴的目標(biāo)文件。當(dāng)所有的目標(biāo)文件都生成之后,gcc就調(diào)用ld

5、來完成最后的關(guān)鍵性工作,這個(gè)階段就是連接。在連接階段,所有的目標(biāo)文件被安排在可執(zhí)行程序中的恰當(dāng)?shù)奈恢?,同時(shí),該程序所調(diào)用到的庫(kù)函數(shù)也從各自所在的函數(shù)庫(kù)中連到合適的地方。 可執(zhí)行文件格式 Linux系統(tǒng)中可執(zhí)行文件有兩種格式。第一種格式是a.out格式,這種格式用于早期的Linux系統(tǒng)以及 Unix系統(tǒng)的原始格式。a.out來自于Unix C編譯程序默認(rèn)的可執(zhí)行文件名。當(dāng)使用共享庫(kù)時(shí),a.out格式就會(huì)發(fā)生問題。把a(bǔ).out格式調(diào)整為共享庫(kù)是一種非常復(fù)雜的操作。因此,一種新的文件格式被引入U(xiǎn)nix系統(tǒng)5的第四版本和Solaris系統(tǒng)中。它被稱為可執(zhí)行和連接的格式(ELF)。這種格式很容易實(shí)現(xiàn)共享

6、庫(kù)。ELF格式已經(jīng)被Linux系統(tǒng)作為標(biāo)準(zhǔn)的格式采用。gcc編譯程序產(chǎn)生的所有的二進(jìn)制文件都是ELF格式的文件(即使可執(zhí)行文件的默認(rèn)名仍然是a.out)。較舊的a.out格式的程序仍然可以運(yùn)行在支持ELF格式的系統(tǒng)上。 Gcc編譯器Gcc編譯選項(xiàng)解析gcc option Gcc編譯器常用option:-c 選項(xiàng):告訴gcc僅把源程序編譯為目標(biāo)代碼而并不做鏈接工作 *只生成test.o文件,而不生成可執(zhí)行文件gcc -c test.cGcc編譯器-S選項(xiàng)只激活預(yù)處理和編譯,就是指把文件編譯成為匯編代碼。-v選項(xiàng) 顯示正在使用的gcc版本信息-o選項(xiàng):默認(rèn)情況下,在gcc沒有指定編譯選項(xiàng)的情況下會(huì)

7、在當(dāng)前目錄生成一個(gè)名為a.out的可執(zhí)行程序。gcc test.c a.out Gcc編譯器為了指定生成的可執(zhí)行文件名采用-o選項(xiàng)。*-o選項(xiàng)后必須帶有可執(zhí)行的文件的文件名 gcc o test test.c test Gcc編譯器static選項(xiàng):此選項(xiàng)將禁止使用動(dòng)態(tài)庫(kù),所以,編譯出來的東西,一般都很大,也不需要什么動(dòng)態(tài)連接庫(kù)就可以運(yùn)行.g選項(xiàng):在可執(zhí)行文件中輸出調(diào)試信息,通常是為調(diào)試器gdb所用Idir選項(xiàng):指定庫(kù)以及頭文件搜索路徑gcc I/home/chen/include o foo foo.cGcc編譯器Ldir選項(xiàng):指定在目錄中需要搜索的庫(kù)(動(dòng)態(tài)庫(kù).so 和靜態(tài)庫(kù).a)gcc f

8、oo.c L/home/chen/lib lfoo o fooGcc編譯器-w選項(xiàng):禁止輸出警告信息-Wall選項(xiàng):顯示所有的警告信息-O選項(xiàng):減小代碼的長(zhǎng)度和執(zhí)行時(shí)間Gcc編譯器示例源程序hello.c#include int main(void)printf(hello gcc!rn);return 0;Gcc編譯器gcc o hello hello.c./hellohello gcc!Gcc編譯器多文件情況:greeting.h./greeting.cmy_app.cfunctionsGcc編譯器gcc o my_app my_app.c functions/greeting.c -I functionGdb調(diào)試器應(yīng)用程序的調(diào)試是開發(fā)過程中必不可少的環(huán)節(jié)之一。Linux下GNU的調(diào)試器稱之為GDB。GDB調(diào)試的是可執(zhí)行文件而不是源程序。在用gdb調(diào)試之前,必須使用帶有-g編譯選項(xiàng)的gcc命令來編譯源程序。Gdb調(diào)試器Gdb命令語(yǔ)法:gdb options Gdb使用gdb myprogrambreak 在代碼里設(shè)置斷點(diǎn), 這將使程序執(zhí)行到這里停止. break 6 run 執(zhí)行當(dāng)前被調(diào)試的程序 可執(zhí)行文件Gdb

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論