培訓(xùn)課件及-4課本3上_第1頁
培訓(xùn)課件及-4課本3上_第2頁
培訓(xùn)課件及-4課本3上_第3頁
培訓(xùn)課件及-4課本3上_第4頁
培訓(xùn)課件及-4課本3上_第5頁
已閱讀5頁,還剩25頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第三章GNU開發(fā)工具的使用方法

GNU(上)3.1vi使用說明

3.1.1vi簡(jiǎn)介 vi是Unix世界里極為普遍的全屏幕文本編輯器,幾乎可以說任何一臺(tái)Unix機(jī)器都會(huì)提供這套軟件。Linux當(dāng)然也有。3.1vi使用說明

3.1.2vi基本命令進(jìn)入與離開vi<文件名稱>;要離開vi可以在指令模式下鍵入:q,:wq指令則是保存后再離開(注意冒號(hào))。輸入模式新增(append)a從光標(biāo)所在位置后面開始新增資料,光標(biāo)后的資料隨新增資料向后移動(dòng)。A從光標(biāo)所在列最后面的地方開始新增資料。3.1vi使用說明

插入(insert)i從光標(biāo)所在位置前面開始插入資料,光標(biāo)后的資料隨新增資料向后移動(dòng)。I從光標(biāo)所在列的第一個(gè)非空白字符前面開始插入資料。開始(open)o在光標(biāo)所在列下新增一列并進(jìn)入輸入模式。O在光標(biāo)所在列上方新增一列并進(jìn)入輸入模式。3.1vi使用說明

(3)基本編輯 配合一般鍵盤上的功能鍵,像是方向鍵、[Insert]、[Delete]等等,現(xiàn)在你應(yīng)該已經(jīng)可以利用vi來處理文字資料了。當(dāng)然vi還提供其他許許多多功能讓文字的處理更加方便,有興趣的讀者請(qǐng)繼續(xù)。(4)刪除與修改x刪除光標(biāo)所在字符。dd刪除光標(biāo)所在的列。r修改光標(biāo)所在字符,r后接著要修正的字符。R進(jìn)入取代狀態(tài),新增資料會(huì)覆蓋原先資料,直到按[ESC]回到指令模式下為止。3.1vi使用說明

s刪除光標(biāo)所在字符,并進(jìn)入輸入模式。S刪除光標(biāo)所在的列,并進(jìn)入輸入模式。在指令模式下移動(dòng)光標(biāo)的基本指令是h,j,k,l。有個(gè)很好用的指令u可以恢復(fù)被刪除的資料,而U指令則可以恢復(fù)光標(biāo)所在列的所有改變。3.2編寫Makefile

無論是在Linux還是在Unix環(huán)境中,make都是一個(gè)非常重要的編譯命令。不管是自己進(jìn)行項(xiàng)目開發(fā)還是安裝應(yīng)用軟件,我們都經(jīng)常要用到make或makeinstall。利用make工具,我們可以將大型的開發(fā)項(xiàng)目分解成為多個(gè)更易于管理的模塊,對(duì)于一個(gè)包括幾百個(gè)源文件的應(yīng)用程序,使用make和makefile工具就可以簡(jiǎn)潔明快地理順各個(gè)源文件之間紛繁復(fù)雜的相互關(guān)系。而且如此多的源文件,如果每次都要鍵入gcc命令進(jìn)行編譯的話,那對(duì)程序員來說簡(jiǎn)直就是一場(chǎng)災(zāi)難。而make工具則可自動(dòng)完成編譯工作,并且可以只對(duì)程序員在上次編譯后修改過的部分進(jìn)行編譯。3.2編寫Makefile

3.2.1什么是MakefileMake—這個(gè)工具最主要也是最基本的功能就是通過makefile文件來描述源程序之間的相互關(guān)系并自動(dòng)維護(hù)編譯工作。

makefile文件--需要按照某種語法進(jìn)行編寫,文件中需要說明如何編譯各個(gè)源文件并連接生成可執(zhí)行文件,并要求定義源文件之間的依賴關(guān)系。由Make工具來解釋執(zhí)行。3.2編寫Makefile

在UNIX系統(tǒng)中,習(xí)慣使用Makefile作為makfile文件。如果要使用其他文件作為makefile,則可利用類似下面的make命令選項(xiàng)指定makefile文件: make-f xxx

默認(rèn)時(shí),make將依次根據(jù)GNUmakefile,makefile,Makefile來查找。3.2編寫Makefile

一個(gè)實(shí)例以及對(duì)它的解釋:

edit:main.okbd.ocommand.odisplay.o\ insert.osearch.ofiles.outils.o cc-oeditmain.okbd.ocommand.odisplay.o\ insert.osearch.ofiles.outils.o main.o:main.cdefs.h

cc-cmain.c kbd.o:kbd.cdefs.hcommand.h

cc-ckbd.c command.o:command.cdefs.hcommand.h

cc-ccommand.c

3.2編寫Makefile

display.o:display.cdefs.hbuffer.h

cc-cdisplay.c insert.o:insert.cdefs.hbuffer.h

cc-cinsert.c search.o:search.cdefs.hbuffer.h

cc-csearch.c files.o:files.cdefs.hbuffer.hcommand.h

cc-cfiles.c utils.o:utils.cdefs.hcc-cutils.c clean:

rmeditmain.okbd.ocommand.odisplay.o\

insert.osearch.ofiles.outils.o3.2編寫Makefile

以上實(shí)例的注釋: 反斜杠(\)是換行符的意思。 在這個(gè)makefile中,目標(biāo)文件(target)包含:執(zhí)行文件edit和中間目標(biāo)文件(*.o),依賴文件(prerequisites)就是冒號(hào)后面的那些.c文件和.h文件。每一個(gè).o文件都有一組依賴文件,而這些.o文件又是執(zhí)行文件edit的依賴文件。依賴關(guān)系的實(shí)質(zhì)上就是說明了目標(biāo)文件是由哪些文件生成的,換言之,目標(biāo)文件是哪些文件更新的。3.2編寫Makefile

3. 后續(xù)的那一行定義了如何生成目標(biāo)文件的操作系統(tǒng)命令,一定要以一個(gè)Tab鍵作為開頭。4. make會(huì)比較targets文件和prerequisites文件的修改日期,如果prerequisites文件的日期要比targets文件的日期要新,或者target不存在的話,那么,make就會(huì)執(zhí)行后續(xù)定義的命令。3.2編寫Makefile

5. 這里要說明一點(diǎn)的是,clean不是一個(gè)文件,它只不過是一個(gè)動(dòng)作名字,有點(diǎn)像C語言中的label一樣,其冒號(hào)后什么也沒有,那么,make就不會(huì)自動(dòng)去找文件的依賴性,也就不會(huì)自動(dòng)執(zhí)行其后所定義的命令。要執(zhí)行其后的命令,就要在make命令后明顯得指出這個(gè)label的名字。3.2編寫Makefile

6. 從上面的例子可以看到,Makefile文件作為一種描述文檔一般需要包含以下內(nèi)容:◆宏定義◆源文件之間的相互依賴關(guān)系◆可執(zhí)行的命令7. Makefile中允許使用簡(jiǎn)單的宏指代源文件及其相關(guān)編譯信息,在Linux中也稱宏為變量。在引用宏時(shí)只需在變量前加$符號(hào),但值得注意的是,如果變量名的長(zhǎng)度超過一個(gè)字符,在引用時(shí)就必須加圓括號(hào)()。3.2編寫Makefile

3.2.2Make命令在make命令后不僅可以出現(xiàn)宏定義,還可以跟其他命令行參數(shù),這些參數(shù)指定了需要編譯的目標(biāo)文件。其標(biāo)準(zhǔn)形式為: target1[target2…]:[:][dependent1…][mands][#…] [(tab)commands][#…]方括號(hào)中間的部分表示可選項(xiàng)。Targets和dependents當(dāng)中可以包含字符、數(shù)字、句點(diǎn)和“/”符號(hào)。除了引用,commands中不能含有“#”,也不允許換行。3.2編寫Makefile

Make命本身可帶有四種參數(shù):標(biāo)志、宏定義、描述文件名和目標(biāo)文件名。其標(biāo)準(zhǔn)形式為: Make[flags][macrodefinitions][targets]Unix系統(tǒng)下標(biāo)志位flags選項(xiàng)及其含義為:

-ffile指定file文件為描述文件,如果file參數(shù)為"-"符,那么描述文件指向標(biāo)準(zhǔn)輸入。如果沒有"-f"參數(shù),則系統(tǒng)將默認(rèn)當(dāng)前目錄下名為makefile或者名為Makefile的文件為描述文件。在Linux中,GNUmake工具在當(dāng)前工作目錄中按照GNUmakefile、makefile、Makefile的順序搜索makefile文件。3.2編寫Makefile

-i忽略命令執(zhí)行返回的出錯(cuò)信息。-s沉默模式,在執(zhí)行之前不輸出相應(yīng)的命令行信息。-r禁止使用build-in規(guī)則。-n非執(zhí)行模式,輸出所有執(zhí)行命令,但并不執(zhí)行。-t更新目標(biāo)文件。-q

make操作將根據(jù)目標(biāo)文件是否已經(jīng)更新返回"0"或非"0"的狀態(tài)信息。3.2編寫Makefile

-p輸出所有宏定義和目標(biāo)文件描述。-d

Debug模式,輸出有關(guān)文件和檢測(cè)時(shí)間的詳細(xì)信息。Linux下make標(biāo)志位的常用選項(xiàng)與Unix系統(tǒng)中稍有不同,下面我們只列出了不同部分:-cdir在讀取makefile之前改變到指定的目錄dir。-Idir當(dāng)包含其他makefile文件時(shí),利用該選項(xiàng)指定搜索目錄。-h

help文擋,顯示所有的make選項(xiàng)。-w在處理makefile之前和之后,都顯示工作目錄。3.2編寫Makefile

通常,makefile中還定義有clean目標(biāo),可用來清除編譯過程中的中間文件,例如: clean: rm-f*.o 運(yùn)行makeclean時(shí),將執(zhí)行rm-f*.o命令,最終刪除所有編譯過程中產(chǎn)生的所有中間文件。3.2編寫Makefile

3.2.3隱含規(guī)則在make工具中包含有一些內(nèi)置的或隱含的規(guī)則,這些規(guī)則定義了如何從不同的依賴文件建立特定類型的目標(biāo)。Unix系統(tǒng)通常支持一種基于文件擴(kuò)展名即文件名后綴的隱含規(guī)則。這種后綴規(guī)則定義了如何將一個(gè)具有特定文件名后綴的文件(例如.c文件),轉(zhuǎn)換成為具有另一種文件名后綴的文件(例如.o文件): .c:.o $(CC)$(CFLAGS)$(CPPFLAGS)-c-o$@$<3.2編寫Makefile

系統(tǒng)中默認(rèn)的常用文件擴(kuò)展名及其含義為: .o目標(biāo)文件 .c

C源文件 .f

FORTRAN源文件 .s匯編源文件3.3使用GCC

GCC編譯器完成從C、C++、objective-C等源文件向運(yùn)行在特定CPU硬件上的目標(biāo)代碼的轉(zhuǎn)換(這是任何一個(gè)編譯器需要完成的任務(wù))。GCC能夠處理的源文件分為C、C++、Objective-C、匯編語言等。3.3使用GCC

3.3.1GCC的用法 GCC的使用語法: gcc[option|filename]... g++[option|filename]... 其中option

為gcc使用時(shí)的選項(xiàng),而filename為欲以gcc處理的文件。 說明: 這兩個(gè)C與C++的compiler已將產(chǎn)生新程序的相關(guān)程序整合起來。產(chǎn)生一個(gè)新的程序需要經(jīng)過四個(gè)階段:預(yù)處理、編譯、匯編,連結(jié),

而這兩個(gè)編譯器都能將輸入的文件做不同階段的處理。3.3使用GCC

gcc

預(yù)設(shè)經(jīng)由預(yù)處理過(擴(kuò)展名為.i)的文件為C語言,并于程序連結(jié)階段以C的連結(jié)方式處理。g++

預(yù)設(shè)經(jīng)由預(yù)處理過(擴(kuò)展名為.i)的文件為C++語言,并于程序連結(jié)階段以C++的連結(jié)方式處理。3.3使用GCC

原始程序碼的擴(kuò)展名指出編寫程序所用的語言,以及相對(duì)應(yīng)的處理方法:.c

C原始程序

預(yù)處理、編譯、匯編.C

C++原始程序

預(yù)處理、編譯、匯編.cc

C++原始程序

;

預(yù)處理、編譯、匯編.cxx

C++原始程序

預(yù)處理、編譯、匯編.m

Objective-C原始程序

;

預(yù)處理、編譯、匯編3.3使用GCC

.i

已經(jīng)過預(yù)處理之C原始程序

;

編譯、匯編.ii

已經(jīng)過預(yù)處理之C++原始程序

;

編譯、匯編.s

組合語言原始程序

;

匯編.S

溫馨提示

  • 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)論