版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
GCC的使用與開(kāi)發(fā)文字編輯器vi主要內(nèi)容和要求一.了解vi編輯器的作用和功能二.熟悉vi的操作環(huán)境和切換方法三.掌握vi操作的方式(幾個(gè)常用鍵)四.了解常用的快捷鍵一.vi編輯器概述vi編輯器是各種UNIX/Linux系統(tǒng)都會(huì)支持的全屏幕文字編輯器,與Windows下的文字編輯器相比,vi的使用要麻煩一些,但功能強(qiáng)大,并且是UNIX/Linux缺省編輯器。任何一位UNIX/Linux系統(tǒng)管理者都應(yīng)該學(xué)會(huì)用vi。vi的操作環(huán)境是針對(duì)熟悉UNIX系統(tǒng)的使用者而設(shè)計(jì),初學(xué)者必須多加練習(xí)。
二.vi的操作環(huán)境和切換方法vi共分為三種模式(1)命令模式:命令模式為vi的初始模式,可以使用“上下左右”按鍵來(lái)移動(dòng)光標(biāo),您可以使用“刪除字符”或“刪除整行”來(lái)處理文檔。在編輯模式或指令列模式中按【ESC】鍵可換回命令模式。(2)編輯模式:在命令模式中按下【i,I,o,O,a,A,r,R】等字母之后才會(huì)進(jìn)入編輯模式。按下上述的字母時(shí),在畫(huà)面的左下方會(huì)出現(xiàn)【--INSERT--或--插入--】的字樣,才可以做文字?jǐn)?shù)據(jù)輸入。(3)指令列模式:在命令模式當(dāng)中,輸入
【:】或【/】就可以將光標(biāo)移動(dòng)到最底下那一行,進(jìn)入指令列模式。在這個(gè)模式當(dāng)中,可以存盤、結(jié)束vi、顯示行號(hào)等操作。
二.vi的操作環(huán)境和切換方法命令模式編輯模式指令列模式按「i,I,o,O,a,A,r,R」按「:」或「/」按ESC三.掌握vi操作的方式(幾個(gè)常用鍵)進(jìn)入vi開(kāi)始編輯:$vi新文件名例如:$vinewfile(打開(kāi)名為newfile的舊文檔,或新編一個(gè)名為newfile的新文檔)剛開(kāi)啟vi時(shí)為命令模式,按下【i,I,o,O,a,A,r,R】等字母之后會(huì)進(jìn)入編輯模式。編輯完畢按下【ESC】返回命令模式操作;在命令模式中按下【:】或【/】可進(jìn)入指令列模式。在指令列模式中(有【:】提示時(shí)),可輸入w(存檔)、q(離開(kāi)vi)、wq(存檔并離開(kāi)vi)、q!(不存檔離開(kāi)vi)、h或help(在線說(shuō)明)、以及其它搜尋取代等指令。再按【ESC】回到命令模式。即:
:w--將編輯的文本存盤。:w!--若文件屬性為“只讀”時(shí),強(qiáng)制存盤:q--退出vi
:q!--退出且不存盤。:wq--存盤并退出主要內(nèi)容gcc簡(jiǎn)介功能命令安裝利用gcc編譯c程序利用make工具簡(jiǎn)化編譯過(guò)程make簡(jiǎn)介Makefile基本格式調(diào)試靜態(tài)調(diào)試動(dòng)態(tài)調(diào)試gdb調(diào)試工具的使用gcc簡(jiǎn)介簡(jiǎn)介:Linux系統(tǒng)下的gcc(GNUCCompiler)是GNU推出的功能強(qiáng)大、性能優(yōu)越的多平臺(tái)編譯器,是GNU的代表作品之一。gcc是可以在多種硬體平臺(tái)上編譯出可執(zhí)行程序的超級(jí)編譯器,其執(zhí)行效率與一般的編譯器相比平均效率要高20%~30%。安裝首先查看linux系統(tǒng)是否安裝了gcc,#rpm–qa|grepgcc如果沒(méi)有安裝,需要安裝gcc-3.2.2-5,libgcc-3.2.2,compat-gcc-7.3-2.96.118,gcc-g77-3.2.2-5幾個(gè)軟件包。對(duì)C/C++編譯的控制(GCC的編譯過(guò)程)預(yù)處理(Preprocessing)gcc首先調(diào)用cpp進(jìn)行預(yù)處理,在預(yù)處理過(guò)程中,對(duì)源代碼文件中的文件包含(include)、預(yù)編譯語(yǔ)句(如宏定義define等)進(jìn)行分析。編譯(Compilation)Gcc調(diào)用cc1進(jìn)行編譯,這個(gè)階段根據(jù)輸入文件生成匯編語(yǔ)言。匯編(Assembly)Gcc調(diào)用as進(jìn)行工作,一般來(lái)講,.S為后綴的匯編語(yǔ)言源代碼文件和匯編、.s為后綴的匯編語(yǔ)言文件經(jīng)過(guò)預(yù)編譯和匯編之后都生成以.o為后綴的目標(biāo)文件。鏈接(Linking)Gcc調(diào)用ld來(lái)完成連接工作,生成可執(zhí)行文件。
gcc的使用基本使用格式$gcc[選項(xiàng)]<文件名>常用選項(xiàng)及含義gcc常用選項(xiàng)選項(xiàng)含義-ofile將經(jīng)過(guò)gcc處理過(guò)的結(jié)果存為文件file,這個(gè)結(jié)果文件可能是預(yù)處理文件、匯編文件、目標(biāo)文件或者最終的可執(zhí)行文件。假設(shè)被處理的源文件為source.suffix,如果這個(gè)選項(xiàng)被省略了,那么生成的可執(zhí)行文件默認(rèn)名稱為a.out;目標(biāo)文件默認(rèn)名為source.o;匯編文件默認(rèn)名為source.s;生成的預(yù)處理文件則發(fā)送到標(biāo)準(zhǔn)輸出設(shè)備。gcc的常用選項(xiàng)gcc常用選項(xiàng)選項(xiàng)含義-c僅對(duì)源文件進(jìn)行編譯,不鏈接生成可執(zhí)行文件。在對(duì)源文件進(jìn)行查錯(cuò)時(shí),或只需產(chǎn)生目標(biāo)文件時(shí)可以使用該選項(xiàng)。-g[gdb]在可執(zhí)行文件中加入調(diào)試信息,方便進(jìn)行程序的調(diào)試。如果使用中括號(hào)中的選項(xiàng),表示加入gdb擴(kuò)展的調(diào)試信息,方便使用gdb來(lái)進(jìn)行調(diào)試-O[0、1、2、3]對(duì)生成的代碼使用優(yōu)化,中括號(hào)中的部分為優(yōu)化級(jí)別,缺省的情況為2級(jí)優(yōu)化,0為不進(jìn)行優(yōu)化。注意,采用更高級(jí)的優(yōu)化并不一定得到效率更高的代碼。-Dname[=definition]將名為name的宏定義為definition,如果中括號(hào)中的部分缺省,則宏被定義為1gcc的常用選項(xiàng)gcc常用選項(xiàng)選項(xiàng)含義-Idir在編譯源程序時(shí)增加一個(gè)搜索頭文件的額外目錄——dir,即include增加一個(gè)搜索的額外目錄。-Ldir在編譯源文件時(shí)增加一個(gè)搜索庫(kù)文件的額外目錄——dir-llibrary在編譯鏈接文件時(shí)增加一個(gè)額外的庫(kù),庫(kù)名為library.a-w禁止所有警告-Wwarning允許產(chǎn)生warning類型的警告,warning可以是:main、unused等很多取值,最常用是-Wall,表示產(chǎn)生所有警告。如果warning取值為error,其含義是將所有警告作為錯(cuò)誤(error),即出現(xiàn)警告就停止編譯。gcc文件擴(kuò)展名規(guī)范gcc可以根據(jù)文件擴(kuò)展名執(zhí)行操作gcc文件擴(kuò)展名規(guī)范擴(kuò)展名類型可進(jìn)行的操作方式.cc語(yǔ)言源程序預(yù)處理、編譯、匯編、鏈接.C,.cc,.cp,.cpp,.c++,.cxxc++語(yǔ)言源程序預(yù)處理、編譯、匯編、鏈接.i預(yù)處理后的c語(yǔ)言源程序編譯、匯編、鏈接.ii預(yù)處理后的c++語(yǔ)言源程序編譯、匯編、鏈接.s預(yù)處理后的匯編程序匯編、鏈接.S未預(yù)處理的匯編程序預(yù)處理、匯編、鏈接.h頭文件不進(jìn)行任何操作.o目標(biāo)文件鏈接使用gcc編譯代碼源代碼示例源程序——hello.c#include<stdio.h>intmain(void){ printf("hellogcc!\r\n"); return0;}生成預(yù)處理文件命令$gcc–Ehello.c–ohello.i預(yù)處理文件hello.i的部分內(nèi)容......externvoidfunlockfile(FILE*__stream);#679"/usr/include/stdio.h"3#2"hello.c"2intmain(void){printf("hellogcc!\n");return0;}生成匯編文件命令$gcc–Shello.c–ohello.s匯編文件hello.s的部分內(nèi)容......main: pushl %ebp movl %esp,%ebp........ addl $16,%esp movl $0,%eax leave ret......"編譯多個(gè)文件文件清單greeting.h#ifndef_GREETING_H#define_GREETING_Hvoidgreeting(char*name);#endifgreeting.c#include<stdio.h>#include"greeting.h"voidgreeting(char*name){printf("Hello%s!\r\n",name);}my_app.c#include<stdio.h>#include"greeting.h"#defineN10intmain(void){charname[N];printf("YourName,Please:");scanf("%s",name);greeting(name);return0;}生成二進(jìn)制文件生成目標(biāo)文件命令:$gcc–chello.c–ohello.o生成可執(zhí)行文件命令:$gcchello.c–ohello運(yùn)行程序$./hello
hellogcc!編譯多個(gè)文件目錄結(jié)構(gòu)(1)編譯命令$gccmy_app.cgreeting.c–omy_app目錄結(jié)構(gòu)(2)編譯方式(1)$ gccmy_app.cfunctions/greeting.c–omy_app-Ifunctionsgreeting.h./greeting.cmy_app.cgreeting.h./greeting.cmy_app.cfunctions編譯多個(gè)文件目錄結(jié)構(gòu)(2)編譯方式(2)分步編譯命令:1、$gcc-cmy_app.c-Ifunctions2、$gcc-cfunctions/greeting.c3、$gccmy_app.ogreeting.o–omy_app思路:編譯每一個(gè).c文件,得到.o的目標(biāo)文件;將每一個(gè).o的目標(biāo)文件鏈接成一個(gè)可執(zhí)行的文件;使用make工具適用場(chǎng)合:多個(gè)文件組成的軟件項(xiàng)目基本格式:目標(biāo):欲生成的目標(biāo)文件依賴項(xiàng):生成目標(biāo)需要的文件原理:判斷依賴項(xiàng)是否為最新,否則,生成新的目標(biāo)make工具的使用格式:make[[命令選項(xiàng)][命令參數(shù)]]通常使用make就可以了,make會(huì)尋找Makefile作為編譯指導(dǎo)文件;目標(biāo):依賴項(xiàng)列表(Tab縮進(jìn))命令使用make工具M(jìn)akefile示例Makefile文件1my_app:greeting.omy_app.o2 gccmy_app.ogreeting.o-omy_app3greeting.o:functions/greeting.cfunctions/greeting.h4 gcc-cfunctions/greeting.c5my_app.o:my_app.cfunctions\greeting.h6 gcc–cmy_app.c–Ifunctions使用make工具目標(biāo)的依賴關(guān)系my_appmy_app.ogreeting.omy_app.cfunctions\greeting.hfunctions\greeting.cgcc–cmy_app.c–Ifunctions
gcc-cfunctions\greeting.c
gccmy_app.ogreeting.o-omy_app
使用make工具更實(shí)用的Makefile更實(shí)用的Makefile文件1OBJS=greeting.omy_app.o2CC=gcc3CFLAGS=-Wall-O–g4my_app:${OBJS}5 ${CC}${OBJS}-omy_app6greeting.o:functions/greeting.cfunctions/greeting.h7 ${CC}${CFLAGS}-cfunctions/greeting.c8my_app.o:my_app.cfunctions/greeting.h9 ${CC}${CFLAGS}-cmy_app.c-Ifunctions調(diào)試調(diào)試靜態(tài)調(diào)試:在程序編譯階段查錯(cuò)并修正錯(cuò)誤;主要為語(yǔ)法錯(cuò)誤:輸入錯(cuò)誤;類型匹配錯(cuò)誤;排錯(cuò)方式:利用錯(cuò)誤、警告信息,并結(jié)合源文件環(huán)境排錯(cuò)動(dòng)態(tài)調(diào)試:在程序運(yùn)行階段差錯(cuò)并修正錯(cuò)誤;主要錯(cuò)誤類型:算法錯(cuò)誤;輸入錯(cuò)誤;排錯(cuò)方式:利用調(diào)試工具定位并修正錯(cuò)誤;調(diào)試舉例源文件greeting.h#ifndef_GREETING_H#define_GREETING_Hvoidgreeting(char*name);#endifgreeting.c#include<stdio.h>#include"greeting.h"voidgreeting(char*name){printf("Hello!\r\n");}my_app.c1#include<stdio.h>2#include"greeting.h"3#defineN104intmain(void)5{6charname[n];7printf("YourName,Please:");8scanf("%s",name)9greeting(name);10/*return0;*/11}靜態(tài)調(diào)試舉例分塊編譯greeting.c$gcc
-g-Wall
-cfunctions/greeting.c-g:將調(diào)試信息加入到編譯的目標(biāo)文件中;-Wall:將編譯過(guò)程中的所有級(jí)別的警告都打印出來(lái);無(wú)錯(cuò)誤my_app.c$gcc-g-Wall-cmy_app.c-Ifunctions參數(shù)含義同上錯(cuò)誤信息:
調(diào)試舉例錯(cuò)誤信息:錯(cuò)誤記錄格式:文件名:行號(hào):錯(cuò)誤描述my_app.c:Infunction`main':my_app.c:6:`n'undeclared(firstuseinthisfunction)my_app.c:6:(Eachundeclaredidentifierisreportedonlyoncemy_app.c:6:foreachfunctionitappearsin.)my_app.c:9:parseerrorbefore"greeting"my_app.c:6:warning:unusedvariable`name'靜態(tài)調(diào)試舉例分析、定位錯(cuò)誤(警告):my_app.c的第6行:描述含義:n是一個(gè)沒(méi)有聲明的變量;分析:聲明數(shù)字name時(shí)用到了變量n,但變量
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年護(hù)士護(hù)理教育項(xiàng)目勞動(dòng)合同3篇
- 二零二五年生物醫(yī)藥研發(fā)與臨床試驗(yàn)合同6篇
- 二零二五版智能家居系統(tǒng)集成與裝飾設(shè)計(jì)合同范本3篇
- 二零二五版高標(biāo)準(zhǔn)預(yù)制混凝土構(gòu)件供應(yīng)合同3篇
- 二零二五版租賃住宅配套設(shè)施租賃服務(wù)合同2篇
- 二零二五版家居用品經(jīng)銷代理合同范本3篇
- 二零二五版互聯(lián)網(wǎng)公司高級(jí)經(jīng)理任職及期權(quán)激勵(lì)合同3篇
- 二零二五版便利店員工工作環(huán)境與設(shè)施改善服務(wù)合同3篇
- 湖南儲(chǔ)備糧代儲(chǔ)合同(2025年度)執(zhí)行細(xì)則范本3篇
- 二零二五版地鐵站商業(yè)廣告位租賃及裝修施工合同3篇
- 2024-2025學(xué)年成都高新區(qū)七上數(shù)學(xué)期末考試試卷【含答案】
- 定額〔2025〕1號(hào)文-關(guān)于發(fā)布2018版電力建設(shè)工程概預(yù)算定額2024年度價(jià)格水平調(diào)整的通知
- 2025年浙江杭州市西湖區(qū)專職社區(qū)招聘85人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 《數(shù)學(xué)廣角-優(yōu)化》說(shuō)課稿-2024-2025學(xué)年四年級(jí)上冊(cè)數(shù)學(xué)人教版
- “懂你”(原題+解題+范文+話題+技巧+閱讀類素材)-2025年中考語(yǔ)文一輪復(fù)習(xí)之寫作
- 2025年景觀照明項(xiàng)目可行性分析報(bào)告
- 2025年江蘇南京地鐵集團(tuán)招聘筆試參考題庫(kù)含答案解析
- 2025年度愛(ài)讀書(shū)學(xué)長(zhǎng)參與的讀書(shū)項(xiàng)目投資合同
- 電力系統(tǒng)分析答案(吳俊勇)(已修訂)
- 化學(xué)-河北省金太陽(yáng)質(zhì)檢聯(lián)盟2024-2025學(xué)年高三上學(xué)期12月第三次聯(lián)考試題和答案
- 期末復(fù)習(xí)試題(試題)-2024-2025學(xué)年四年級(jí)上冊(cè)數(shù)學(xué) 北師大版
評(píng)論
0/150
提交評(píng)論