版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、Linux 下程序設(shè)計基礎(chǔ) Email:Linux 程序設(shè)計編輯器的使用編譯器的使用調(diào)試程序的方法編輯器的使用Vim編輯器Vim是Linux最基本的文本編輯工具。用戶如果使用vi進(jìn)行編輯,可以在系統(tǒng)提示符下輸入:如果文件名存在則打開文件,否則建立一個新的文本文件userlinux $ vi fileVim編輯器的使用Vim編輯器的工作模式編輯模式 插入模式 命令模式 Vim編輯器的使用鍵鍵I鍵自動返回shell提示符命令模式插入模式末行模式啟動vi退出viVim編輯器的使用命令模式移動光標(biāo)、刪除文字、復(fù)制或粘貼文字 。不能編輯文本Vim編輯器的使用命令含義x刪除光標(biāo)所指向的當(dāng)前字符 nx 刪除
2、光標(biāo)所指向的前 n 個字符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編輯器的使用插入模式:插入模式下用戶可以對文件進(jìn)行輸入。Vim編輯器的使用末行模式 在末行模式下鍵入“:”,光標(biāo)就跳到屏幕最后一行,并在那里顯示冒號,此時已進(jìn)入末行模式Vim編輯器的使用q在未作修改的情況下退出 q!放棄所有修改,退出編輯程序 :w 將編輯的內(nèi)容寫入原始文件,用來保存編輯的中間結(jié)果 :
3、w file file 將編輯的內(nèi)容寫入 file 文件,保持原有文件的內(nèi)容不變 :wq 將編輯的內(nèi)容寫入原始文件并退出編輯程序 命令模式下常用命令其它編輯器regdit Linux下編譯器在為Linux開發(fā)應(yīng)用程序時,絕大多數(shù)情況下使用的都是C語言,因此幾乎每一位Linux程序員面臨的首要問題都是如何靈活運(yùn)用C編譯器.目前Linux下最常用的C語言編譯器是GCC。gcc簡介 gcc 是 GNU 的 C 和 C+ 編譯器。實際上,gcc 能夠編譯多種語言:C、C+ 和 Object C等。利用 gcc 命令可同時編譯并連接 C 和 C+ 源程序。也可以對幾個 C 源文件利用 gcc 編譯、連接
4、并生成可執(zhí)行文件。gcc可以使程序員靈活地控制編譯過程。編譯過程一般可以分為下面四個階段,每個階段分別調(diào)用不同的工具進(jìn)行處理預(yù)處理鏈接編譯組譯源程序(*.c)可執(zhí)行文件預(yù)處理器編譯器組譯器連接器gcc的四個階段命令gcc首先調(diào)用cpp進(jìn)行預(yù)處理,在預(yù)處理過程中,對源代碼文件中的文件包含(include)、預(yù)編譯語句(如宏定義define等)進(jìn)行分析。接著調(diào)用cc1進(jìn)行編譯,這個階段根據(jù)輸入文件生成以.o為后綴的目標(biāo)文件。匯編過程是針對匯編語言的步驟,調(diào)用as進(jìn)行工作,一般來講,.S或.s為后綴的匯編語言源代碼文件匯編之后都生成以.o為后綴的目標(biāo)文件。當(dāng)所有的目標(biāo)文件都生成之后,gcc就調(diào)用ld
5、來完成最后的關(guān)鍵性工作,這個階段就是連接。在連接階段,所有的目標(biāo)文件被安排在可執(zhí)行程序中的恰當(dāng)?shù)奈恢?,同時,該程序所調(diào)用到的庫函數(shù)也從各自所在的函數(shù)庫中連到合適的地方。 可執(zhí)行文件格式 Linux系統(tǒng)中可執(zhí)行文件有兩種格式。第一種格式是a.out格式,這種格式用于早期的Linux系統(tǒng)以及 Unix系統(tǒng)的原始格式。a.out來自于Unix C編譯程序默認(rèn)的可執(zhí)行文件名。當(dāng)使用共享庫時,a.out格式就會發(fā)生問題。把a(bǔ).out格式調(diào)整為共享庫是一種非常復(fù)雜的操作。因此,一種新的文件格式被引入Unix系統(tǒng)5的第四版本和Solaris系統(tǒng)中。它被稱為可執(zhí)行和連接的格式(ELF)。這種格式很容易實現(xiàn)共享
6、庫。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編譯選項解析gcc option Gcc編譯器常用option:-c 選項:告訴gcc僅把源程序編譯為目標(biāo)代碼而并不做鏈接工作 *只生成test.o文件,而不生成可執(zhí)行文件gcc -c test.cGcc編譯器-S選項只激活預(yù)處理和編譯,就是指把文件編譯成為匯編代碼。-v選項 顯示正在使用的gcc版本信息-o選項:默認(rèn)情況下,在gcc沒有指定編譯選項的情況下會
7、在當(dāng)前目錄生成一個名為a.out的可執(zhí)行程序。gcc test.c a.out Gcc編譯器為了指定生成的可執(zhí)行文件名采用-o選項。*-o選項后必須帶有可執(zhí)行的文件的文件名 gcc o test test.c test Gcc編譯器static選項:此選項將禁止使用動態(tài)庫,所以,編譯出來的東西,一般都很大,也不需要什么動態(tài)連接庫就可以運(yùn)行.g選項:在可執(zhí)行文件中輸出調(diào)試信息,通常是為調(diào)試器gdb所用Idir選項:指定庫以及頭文件搜索路徑gcc I/home/chen/include o foo foo.cGcc編譯器Ldir選項:指定在目錄中需要搜索的庫(動態(tài)庫.so 和靜態(tài)庫.a)gcc f
8、oo.c L/home/chen/lib lfoo o fooGcc編譯器-w選項:禁止輸出警告信息-Wall選項:顯示所有的警告信息-O選項:減小代碼的長度和執(zhí)行時間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編譯選項的gcc命令來編譯源程序。Gdb調(diào)試器Gdb命令語法:gdb options Gdb使用gdb myprogrambreak 在代碼里設(shè)置斷點, 這將使程序執(zhí)行到這里停止. break 6 run 執(zhí)行當(dāng)前被調(diào)試的程序 可執(zhí)行文件Gdb
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度產(chǎn)業(yè)園品牌推廣及市場合作合同3篇
- 2025年度濟(jì)南旅游開發(fā)合作合同2篇
- 2025版文化藝術(shù)行業(yè)崗位勞動合同規(guī)范匯編3篇
- 二零二五年度冠梁材料供應(yīng)與安裝承包合同3篇
- 二零二五年度房屋買賣合同:針對共有產(chǎn)權(quán)及子女入學(xué)權(quán)益3篇
- 2025年度版權(quán)許可使用合同:數(shù)字音樂平臺著作權(quán)授權(quán)協(xié)議2篇
- 皮帶修復(fù)課程設(shè)計
- 海南外國語職業(yè)學(xué)院《西方思想文化專題研究》2023-2024學(xué)年第一學(xué)期期末試卷
- 海南外國語職業(yè)學(xué)院《環(huán)保設(shè)備基礎(chǔ)》2023-2024學(xué)年第一學(xué)期期末試卷
- 海南體育職業(yè)技術(shù)學(xué)院《建筑力學(xué)(一)》2023-2024學(xué)年第一學(xué)期期末試卷
- 蘇教版六年級科學(xué)上冊復(fù)習(xí)資料-已整理
- 科勒衛(wèi)浴行業(yè)分析
- 湖南省邵陽市初中聯(lián)考2023-2024學(xué)年九年級上學(xué)期期末地理試題
- 美術(shù)概論課件
- 綠籬移栽施工方案
- 機(jī)器人論文3000字范文
- 中國保險行業(yè)協(xié)會-2022年度商業(yè)健康保險經(jīng)營數(shù)據(jù)分析報告
- 新人教版小學(xué)五年級數(shù)學(xué)上冊知識點歸納總結(jié)
- 四年級上冊口算、豎式計算、脫式計算
- 腎內(nèi)科降低透析器凝血發(fā)生率品管圈PDCA成果匯報
- 回族做禮拜的念詞集合6篇
評論
0/150
提交評論