




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
怎樣用編譯器把文件編譯成為匯編代碼?c編譯器是解析c程序不可缺少的部件之一,針對(duì)linux系統(tǒng)而言,gccc編譯器無(wú)疑是熱度最高的c編譯器之一。對(duì)于gccc編譯器,很多朋友反饋其操作存在一定難度。為幫助大家更加流暢使用gccc編譯器,本文特對(duì)gccc編譯器各大參數(shù)予以講解。gcc與g++分別是gnu的c&c++編譯器gcc/g++在執(zhí)行編譯工作的時(shí)候,總共需要4步:1、預(yù)處理,生成.i的文件[預(yù)處理器cpp]2、將預(yù)處理后的文件轉(zhuǎn)換成匯編語(yǔ)言,生成文件.s[編譯器egcs]3、有匯編變?yōu)槟繕?biāo)代碼(機(jī)器代碼)生成.o的文件[匯編器as]4、連接目標(biāo)代碼,生成可執(zhí)行程序[鏈接器ld]-xlanguagefilename設(shè)定文件所使用的語(yǔ)言,使后綴名無(wú)效,對(duì)以后的多個(gè)有效。也就是根據(jù)約定C語(yǔ)言的后綴名稱是.c的,而C++的后綴名是.C或者.cpp,如果你很個(gè)性,決定你的C代碼文件的后綴名是.pig哈哈,那你就要用這個(gè)參數(shù),這個(gè)參數(shù)對(duì)他后面的文件名都起作用,除非到了下一個(gè)參數(shù)的使用??梢允褂玫膮?shù)嗎有下面的這些:‘c’,‘objective-c’,‘c-header’,‘c++’,‘cpp-output’,‘a(chǎn)ssembler’,與‘a(chǎn)ssembler-with-cpp’??吹接⑽?,應(yīng)該可以理解的。例子用法:gcc-xchello.pig-xnonefilename關(guān)掉上一個(gè)選項(xiàng),也就是讓gcc根據(jù)文件名后綴,自動(dòng)識(shí)別文件類型。例子用法:gcc-xchello.pig-xnonehello2.c-c只激活預(yù)處理,編譯,和匯編,也就是他只把程序做成obj文件例子用法:gcc-chello.c他將生成.o的obj文件-S只激活預(yù)處理和編譯,就是指把文件編譯成為匯編代碼。例子用法:gcc-Shello.c他將生成.s的匯編代碼,你可以用文本編輯器察看。-E只激活預(yù)處理,這個(gè)不生成文件,你需要把它重定向到一個(gè)輸出文件里面。例子用法:gcc-Ehello.c》pianoapan.txtgcc-Ehello.c|more慢慢看吧,一個(gè)helloword也要與處理成800行的代碼。-o制定目標(biāo)名稱,默認(rèn)的時(shí)候,gcc編譯出來(lái)的文件是a.out,很難聽(tīng),如果你和我有同感,改掉它,哈哈。例子用法:gcc-ohello.exehello.c(哦,windows用習(xí)慣了)gcc-ohello.asm-Shello.c-pipe使用管道代替編譯中臨時(shí)文件,在使用非gnu匯編工具的時(shí)候,可能有些問(wèn)題。gcc-pipe-ohello.exehello.c-ansi關(guān)閉gnuc中與ansic不兼容的特性,激活ansic的專有特性(包括禁止一些asminlinetypeof關(guān)鍵字,以及UNIX,vax等預(yù)處理宏)。-fno-asm此選項(xiàng)實(shí)現(xiàn)ansi選項(xiàng)的功能的一部分,它禁止將asm,inline和typeof用作關(guān)鍵字。-fno-strict-prototype只對(duì)g++起作用,使用這個(gè)選項(xiàng),g++將對(duì)不帶參數(shù)的函數(shù),都認(rèn)為是沒(méi)有顯式的對(duì)參數(shù)的個(gè)數(shù)和類型說(shuō)明,而不是沒(méi)有參數(shù)。而gcc無(wú)論是否使用這個(gè)參數(shù),都將對(duì)沒(méi)有帶參數(shù)的函數(shù),認(rèn)為城沒(méi)有顯式說(shuō)明的類型。-fthis-is-varialble就是向傳統(tǒng)c++看齊,可以使用this當(dāng)一般變量使用。-fcond-mismatch允許條件表達(dá)式的第二和第三參數(shù)類型不匹配,表達(dá)式的值將為void類型。-funsigned-char、-fno-signed-char、-fsigned-char、-fno-unsigned-char這四個(gè)參數(shù)是對(duì)char類型進(jìn)行設(shè)置,決定將char類型設(shè)置成unsignedchar(前兩個(gè)參數(shù))或者signedchar(后兩個(gè)參數(shù))。-includefile包含某個(gè)代碼,簡(jiǎn)單來(lái)說(shuō),就是便以某個(gè)文件,需要另一個(gè)文件的時(shí)候,就可以用它設(shè)定,功能就相當(dāng)于在代碼中使用#include。例子用法:gcchello.c-include/root/pianopan.h-imacrosfile將file文件的宏,擴(kuò)展到gcc/g++的輸入文件,宏定義本身并不出現(xiàn)在輸入文件中。-Dmacro相當(dāng)于C語(yǔ)言中的#definemacro-Dmacro=defn相當(dāng)于C語(yǔ)言中的#definemacro=defn-Umacro相當(dāng)于C語(yǔ)言中的#undefmacro-undef取消對(duì)任何非標(biāo)準(zhǔn)宏的定義-Idir在你是用#include“file”的時(shí)候,gcc/g++會(huì)先在當(dāng)前目錄查找你所制定的頭文件,如果沒(méi)有找到,他回到默認(rèn)的頭文件目錄找,如果使用-I制定了目錄,他會(huì)先在你所制定的目錄查找,然后再按常規(guī)的順序去找。對(duì)于#include,gcc/g++會(huì)到-I制定的目錄查找,查找不到,然后將到系統(tǒng)的默認(rèn)的頭文件目錄查找。-I-就是取消前一個(gè)參數(shù)的功能,所以一般在-Idir之后使用。-idirafterdir在-I的目錄里面查找失敗,講到這個(gè)目錄里面查找。-iprefixprefix、-iwithprefixdir一般一起使用,當(dāng)-I的目錄查找失敗,會(huì)到prefix+dir下查找-nostdinc使編譯器不再系統(tǒng)默認(rèn)的頭文件目錄里面找頭文件,一般和-I聯(lián)合使用,明確限定頭文件的位置。-nostdinC++規(guī)定不在g++指定的標(biāo)準(zhǔn)路經(jīng)中搜索,但仍在其他路徑中搜索,此選項(xiàng)在創(chuàng)libg++庫(kù)使用。-C在預(yù)處理的時(shí)候,不刪除注釋信息,一般和-E使用,有時(shí)候分析程序,用這個(gè)很方便的。-M生成文件關(guān)聯(lián)的信息。包含目標(biāo)文件所依賴的所有源代碼你可以用gcc-Mhello.c來(lái)測(cè)試一下,很簡(jiǎn)單。-MM和上面的那個(gè)一樣,但是它將忽略由#include造成的依賴關(guān)系。-MD和-M相同,但是輸出將導(dǎo)入到.d的文件里面-MMD和-MM相同,但是輸出將導(dǎo)入到.d的文件里面。-Wa,option此選項(xiàng)傳遞option給匯編程序;如果option中間有逗號(hào),就將option分成多個(gè)選項(xiàng),然后傳遞給會(huì)匯編程序。-Wl.option此選項(xiàng)傳遞option給連接程序;如果option中間有逗號(hào),就將option分成多個(gè)選項(xiàng),然后傳遞給會(huì)連接程序。-llibrary制定編譯的時(shí)候使用的庫(kù)例子用法gcc-lcurseshello.c使用ncurses庫(kù)編譯程序-Ldir制定編譯的時(shí)候,搜索庫(kù)的路徑。比如你自己的庫(kù),可以用它制定目錄,不然編譯器將只在標(biāo)準(zhǔn)庫(kù)的目錄找。這個(gè)dir就是目錄的名稱。-O0、-O1、-O2、-O3編譯器的優(yōu)化選項(xiàng)的4個(gè)級(jí)別,-O0表示沒(méi)有優(yōu)化,-O1為默認(rèn)值,-O3優(yōu)化級(jí)別最高。-g只是編譯器,在編譯的時(shí)候,產(chǎn)生調(diào)試信息。-gstabs此選項(xiàng)以stabs格式聲稱調(diào)試信息,但是不包括gdb調(diào)試信息。-gstabs+此選項(xiàng)以stabs格式聲稱調(diào)試信息,并且包含僅供gdb使用的額外調(diào)試信息。-ggdb此選項(xiàng)將盡可能的生成gdb的可
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 18204.6-2025公共場(chǎng)所衛(wèi)生檢驗(yàn)方法第6部分:衛(wèi)生監(jiān)測(cè)技術(shù)規(guī)范
- 別墅租賃合同
- (高清版)DB54∕T 0459-2025 絨山羊控光增絨技術(shù)規(guī)程
- 安全生產(chǎn)主題演講稿(30篇)
- 云南省昭通市市直中學(xué)2024-2025學(xué)年高一下學(xué)期第二次月考(5月)地理試卷(含答案)
- 陜西省榆林市2023-2024學(xué)年高一下學(xué)期期末考試地理試卷(含答案)
- 山東省菏澤市鄄城縣2024-2025學(xué)年八年級(jí)下學(xué)期期末練習(xí)生物試卷(含答案)
- 河北省滄州市四縣多校聯(lián)考2024-2025學(xué)年高一下學(xué)期(6月)第三次月考政治試卷(含答案)
- 福建省三明市六校2024-2025學(xué)年高二下學(xué)期期中考試生物試卷(含答案)
- 居民科普宣傳活動(dòng)方案
- 《公路路基路面現(xiàn)場(chǎng)測(cè)試規(guī)程》(3450-2019)
- 2021年機(jī)電一體化專業(yè)技能考試(山東省春季高考)試題
- 商業(yè)保理業(yè)務(wù)法律風(fēng)險(xiǎn)與規(guī)避
- 醫(yī)療質(zhì)量安全核心制度要點(diǎn)釋義(國(guó)家衛(wèi)健委)
- 國(guó)家開(kāi)放大學(xué)《中國(guó)現(xiàn)代文學(xué)專題》形考任務(wù)1-4參考答案
- COSO風(fēng)險(xiǎn)管理框架中文版
- XX市沙灣區(qū)美女峰景區(qū)建設(shè)項(xiàng)目意見(jiàn)書(shū)
- 廣東省深圳市普通高中2022-2023學(xué)年高一下學(xué)期期末數(shù)學(xué)試題
- 腫瘤防治科普叢書(shū):胃腸腫瘤
- 提高門診一醫(yī)一患執(zhí)行率
- 重癥患者用藥安全課件
評(píng)論
0/150
提交評(píng)論