怎樣用編譯器把文件編譯成為匯編代碼_第1頁
怎樣用編譯器把文件編譯成為匯編代碼_第2頁
怎樣用編譯器把文件編譯成為匯編代碼_第3頁
怎樣用編譯器把文件編譯成為匯編代碼_第4頁
怎樣用編譯器把文件編譯成為匯編代碼_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

怎樣用編譯器把文件編譯成為匯編代碼?c編譯器是解析c程序不可缺少的部件之一,針對linux系統(tǒng)而言,gccc編譯器無疑是熱度最高的c編譯器之一。對于gccc編譯器,很多朋友反饋其操作存在一定難度。為幫助大家更加流暢使用gccc編譯器,本文特對gccc編譯器各大參數(shù)予以講解。gcc與g++分別是gnu的c&c++編譯器gcc/g++在執(zhí)行編譯工作的時候,總共需要4步:1、預處理,生成.i的文件[預處理器cpp]2、將預處理后的文件轉(zhuǎn)換成匯編語言,生成文件.s[編譯器egcs]3、有匯編變?yōu)槟繕舜a(機器代碼)生成.o的文件[匯編器as]4、連接目標代碼,生成可執(zhí)行程序[鏈接器ld]-xlanguagefilename設定文件所使用的語言,使后綴名無效,對以后的多個有效。也就是根據(jù)約定C語言的后綴名稱是.c的,而C++的后綴名是.C或者.cpp,如果你很個性,決定你的C代碼文件的后綴名是.pig哈哈,那你就要用這個參數(shù),這個參數(shù)對他后面的文件名都起作用,除非到了下一個參數(shù)的使用。可以使用的參數(shù)嗎有下面的這些:‘c’,‘objective-c’,‘c-header’,‘c++’,‘cpp-output’,‘a(chǎn)ssembler’,與‘a(chǎn)ssembler-with-cpp’??吹接⑽?,應該可以理解的。例子用法:gcc-xchello.pig-xnonefilename關掉上一個選項,也就是讓gcc根據(jù)文件名后綴,自動識別文件類型。例子用法:gcc-xchello.pig-xnonehello2.c-c只激活預處理,編譯,和匯編,也就是他只把程序做成obj文件例子用法:gcc-chello.c他將生成.o的obj文件-S只激活預處理和編譯,就是指把文件編譯成為匯編代碼。例子用法:gcc-Shello.c他將生成.s的匯編代碼,你可以用文本編輯器察看。-E只激活預處理,這個不生成文件,你需要把它重定向到一個輸出文件里面。例子用法:gcc-Ehello.c》pianoapan.txtgcc-Ehello.c|more慢慢看吧,一個helloword也要與處理成800行的代碼。-o制定目標名稱,默認的時候,gcc編譯出來的文件是a.out,很難聽,如果你和我有同感,改掉它,哈哈。例子用法:gcc-ohello.exehello.c(哦,windows用習慣了)gcc-ohello.asm-Shello.c-pipe使用管道代替編譯中臨時文件,在使用非gnu匯編工具的時候,可能有些問題。gcc-pipe-ohello.exehello.c-ansi關閉gnuc中與ansic不兼容的特性,激活ansic的專有特性(包括禁止一些asminlinetypeof關鍵字,以及UNIX,vax等預處理宏)。-fno-asm此選項實現(xiàn)ansi選項的功能的一部分,它禁止將asm,inline和typeof用作關鍵字。-fno-strict-prototype只對g++起作用,使用這個選項,g++將對不帶參數(shù)的函數(shù),都認為是沒有顯式的對參數(shù)的個數(shù)和類型說明,而不是沒有參數(shù)。而gcc無論是否使用這個參數(shù),都將對沒有帶參數(shù)的函數(shù),認為城沒有顯式說明的類型。-fthis-is-varialble就是向傳統(tǒng)c++看齊,可以使用this當一般變量使用。-fcond-mismatch允許條件表達式的第二和第三參數(shù)類型不匹配,表達式的值將為void類型。-funsigned-char、-fno-signed-char、-fsigned-char、-fno-unsigned-char這四個參數(shù)是對char類型進行設置,決定將char類型設置成unsignedchar(前兩個參數(shù))或者signedchar(后兩個參數(shù))。-includefile包含某個代碼,簡單來說,就是便以某個文件,需要另一個文件的時候,就可以用它設定,功能就相當于在代碼中使用#include。例子用法:gcchello.c-include/root/pianopan.h-imacrosfile將file文件的宏,擴展到gcc/g++的輸入文件,宏定義本身并不出現(xiàn)在輸入文件中。-Dmacro相當于C語言中的#definemacro-Dmacro=defn相當于C語言中的#definemacro=defn-Umacro相當于C語言中的#undefmacro-undef取消對任何非標準宏的定義-Idir在你是用#include“file”的時候,gcc/g++會先在當前目錄查找你所制定的頭文件,如果沒有找到,他回到默認的頭文件目錄找,如果使用-I制定了目錄,他會先在你所制定的目錄查找,然后再按常規(guī)的順序去找。對于#include,gcc/g++會到-I制定的目錄查找,查找不到,然后將到系統(tǒng)的默認的頭文件目錄查找。-I-就是取消前一個參數(shù)的功能,所以一般在-Idir之后使用。-idirafterdir在-I的目錄里面查找失敗,講到這個目錄里面查找。-iprefixprefix、-iwithprefixdir一般一起使用,當-I的目錄查找失敗,會到prefix+dir下查找-nostdinc使編譯器不再系統(tǒng)默認的頭文件目錄里面找頭文件,一般和-I聯(lián)合使用,明確限定頭文件的位置。-nostdinC++規(guī)定不在g++指定的標準路經(jīng)中搜索,但仍在其他路徑中搜索,此選項在創(chuàng)libg++庫使用。-C在預處理的時候,不刪除注釋信息,一般和-E使用,有時候分析程序,用這個很方便的。-M生成文件關聯(lián)的信息。包含目標文件所依賴的所有源代碼你可以用gcc-Mhello.c來測試一下,很簡單。-MM和上面的那個一樣,但是它將忽略由#include造成的依賴關系。-MD和-M相同,但是輸出將導入到.d的文件里面-MMD和-MM相同,但是輸出將導入到.d的文件里面。-Wa,option此選項傳遞option給匯編程序;如果option中間有逗號,就將option分成多個選項,然后傳遞給會匯編程序。-Wl.option此選項傳遞option給連接程序;如果option中間有逗號,就將option分成多個選項,然后傳遞給會連接程序。-llibrary制定編譯的時候使用的庫例子用法gcc-lcurseshello.c使用ncurses庫編譯程序-Ldir制定編譯的時候,搜索庫的路徑。比如你自己的庫,可以用它制定目錄,不然編譯器將只在標準庫的目錄找。這個dir就是目錄的名稱。-O0、-O1、-O2、-O3編譯器的優(yōu)化選項的4個級別,-O0表示沒有優(yōu)化,-O1為默認值,-O3優(yōu)化級別最高。-g只是編譯器,在編譯的時候,產(chǎn)生調(diào)試信息。-gstabs此選項以stabs格式聲稱調(diào)試信息,但是不包括gdb調(diào)試信息。-gstabs+此選項以stabs格式聲稱調(diào)試信息,并且包含僅供gdb使用的額外調(diào)試信息。-ggdb此選項將盡可能的生成gdb的可

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論