GCC參數詳解

? ? ?轉自:http://www.cnblogs.com/fence/archive/2009/12/18/1627138.html??

? ? GCC參數詳解

? ? ? ? gcc and g++分別是gnu的c & c++編譯器


  gcc/g++在執行編譯工作的時候,總共需要4步
  1.預處理,生成.i的文件[預處理器cpp]
  2.將預處理后的文件不轉換成匯編語言,生成文件.s[編譯器egcs]
  3.有匯編變為目標代碼(機器代碼)生成.o的文件[匯編器as]
  4.連接目標代碼,生成可執行程序[鏈接器ld]
  [參數詳解]
  -x language filename
  設定文件所使用的語言,使后綴名無效,對以后的多個有效.也就是根
  據約定C語言的后綴名稱是.c的,而C++的后綴名是.C或者.cpp,如果
  你很個性,決定你的C代碼文件的后綴名是.pig 哈哈,那你就要用這
  個參數,這個參數對他后面的文件名都起作用,除非到了下一個參數
  的使用。
  可以使用的參數嗎有下面的這些
  `c', `objective-c', `c-header', `c++', `cpp-output',
  `assembler', and `assembler-with-cpp'.
  看到英文,應該可以理解的。
  例子用法:
  gcc -x c hello.pig
  -x none filename
  關掉上一個選項,也就是讓gcc根據文件名后綴,自動識別文件類型
  例子用法:
  gcc -x c hello.pig -x none hello2.c
  -c
  只激活預處理,編譯,和匯編,也就是他只把程序做成obj文件
  例子用法:
  gcc -c hello.c
  他將生成.o的obj文件
  -S
  只激活預處理和編譯,就是指把文件編譯成為匯編代碼。
  例子用法
  gcc -S hello.c
  他將生成.s的匯編代碼,你可以用文本編輯器察看
  -E
  只激活預處理,這個不生成文件,你需要把它重定向到一個輸出文件里
  面.
  例子用法:
  gcc -E hello.c > pianoapan.txt
  gcc -E hello.c | more
  慢慢看吧,一個hello word 也要與處理成800行的代碼
  -o
  制定目標名稱,缺省的時候,gcc 編譯出來的文件是a.out,很難聽,如果
  你和我有同感,改掉它,哈哈
  例子用法
  gcc -o hello.exe hello.c (哦,windows用習慣了)
  gcc -o hello.asm -S hello.c
  -pipe
  使用管道代替編譯中臨時文件,在使用非gnu匯編工具的時候,可能有些問
  題
  gcc -pipe -o hello.exe hello.c
  -ansi
  關閉gnu c中與ansi c不兼容的特性,激活ansi c的專有特性(包括禁止一
  些asm inline typeof關鍵字,以及UNIX,vax等預處理宏,
  -fno-asm
  此選項實現ansi選項的功能的一部分,它禁止將asm,inline和typeof用作
  關鍵字。
  -fno-strict-prototype
  只對g++起作用,使用這個選項,g++將對不帶參數的函數,都認為是沒有顯式
  的對參數的個數和類型說明,而不是沒有參數.
  而gcc無論是否使用這個參數,都將對沒有帶參數的函數,認為城沒有顯式說
  明的類型
  -fthis-is-varialble
  就是向傳統c++看齊,可以使用this當一般變量使用.
  -fcond-mismatch
  允許條件表達式的第二和第三參數類型不匹配,表達式的值將為void類型
  -funsigned-char
  -fno-signed-char
  -fsigned-char
  -fno-unsigned-char
  這四個參數是對char類型進行設置,決定將char類型設置成unsigned char(前
  兩個參數)或者 signed char(后兩個參數)
  -include file
  包含某個代碼,簡單來說,就是便以某個文件,需要另一個文件的時候,就可以
  用它設定,功能就相當于在代碼中使用#include<filename>
  例子用法:
  gcc hello.c -include /root/pianopan.h
  -imacros file
  將file文件的宏,擴展到gcc/g++的輸入文件,宏定義本身并不出現在輸入文件
  中
  -Dmacro
  相當于C語言中的#define macro
  -Dmacro=defn
  相當于C語言中的#define macro=defn
  -Umacro
  相當于C語言中的#undef macro
  -undef
  取消對任何非標準宏的定義
  -Idir
  在你是用#include"file"的時候,gcc/g++會先在當前目錄查找你所制定的頭
  文件,如果沒有找到,他回到缺省的頭文件目錄找,如果使用-I制定了目錄,他
  回先在你所制定的目錄查找,然后再按常規的順序去找.
  對于#include<file>,gcc/g++會到-I制定的目錄查找,查找不到,然后將到系
  統的缺省的頭文件目錄查找
  -I-
  就是取消前一個參數的功能,所以一般在-Idir之后使用
  -idirafter dir
  在-I的目錄里面查找失敗,講到這個目錄里面查找.
  -iprefix prefix
  -iwithprefix dir
  一般一起使用,當-I的目錄查找失敗,會到prefix+dir下查找
  -nostdinc
  使編譯器不再系統缺省的頭文件目錄里面找頭文件,一般和-I聯合使用,明確
  限定頭文件的位置
  -nostdin C++
  規定不在g++指定的標準路經中搜索,但仍在其他路徑中搜索,.此選項在創建
  libg++庫使用
  -C
  在預處理的時候,不刪除注釋信息,一般和-E使用,有時候分析程序,用這個很
  方便的
  -M
  生成文件關聯的信息。包含目標文件所依賴的所有源代碼
  你可以用gcc -M hello.c來測試一下,很簡單。
  -MM
  和上面的那個一樣,但是它將忽略由#include<file>造成的依賴關系。
  -MD
  和-M相同,但是輸出將導入到.d的文件里面
  -MMD
  和-MM相同,但是輸出將導入到.d的文件里面
  -Wa,option
  此選項傳遞option給匯編程序;如果option中間有逗號,就將option分成多個選
  項,然后傳遞給會匯編程序
  -Wl.option
  此選項傳遞option給連接程序;如果option中間有逗號,就將option分成多個選
  項,然后傳遞給會連接程序.
  -llibrary
  制定編譯的時候使用的庫
  例子用法
  gcc -lcurses hello.c
  使用ncurses庫編譯程序
  -Ldir
  制定編譯的時候,搜索庫的路徑。比如你自己的庫,可以用它制定目錄,不然
  編譯器將只在標準庫的目錄找。這個dir就是目錄的名稱。
  -O0
  -O1
  -O2
  -O3
  編譯器的優化選項的4個級別,-O0表示沒有優化,-O1為缺省值,-O3優化級別最
  高
  -g
  只是編譯器,在編譯的時候,產生條是信息。
  -gstabs
  此選項以stabs格式聲稱調試信息,但是不包括gdb調試信息.
  -gstabs+
  此選項以stabs格式聲稱調試信息,并且包含僅供gdb使用的額外調試信息.
  -ggdb
  此選項將盡可能的生成gdb的可以使用的調試信息.
  -static
  此選項將禁止使用動態庫,所以,編譯出來的東西,一般都很大,也不需要什么
  動態連接庫,就可以運行.
  -share
  此選項將盡量使用動態庫,所以生成文件比較小,但是需要系統由動態庫.
  -traditional
  試圖讓編譯器支持傳統的C語言特性

轉載于:https://www.cnblogs.com/Harry-Lord/archive/2011/11/05/4002912.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/275191.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/275191.shtml
英文地址,請注明出處:http://en.pswp.cn/news/275191.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

真效率神器,UI稿智能轉換成前端代碼,準確率極高

大家好&#xff0c;我是若川。在這充滿網絡促銷活動的幾個月&#xff0c;倍感壓力的&#xff0c;除了你的口袋&#xff0c;是否還有程序員的發量呢&#xff1f;每年的雙十一、雙十二購物狂歡節&#xff0c;各大電商平臺都會上線讓消費者充滿購買欲望的活動頁面&#xff0c;而這…

PPT圖標的正確使用和插入與編輯形狀

PPT圖標的正確使用和插入與編輯形狀 通過圖標可以以符號的形式直觀地傳遞信息。 一&#xff0c;實戰&#xff1a;在銷售工作計劃中插入圖標 PowerPoint 2016中提供了多種類型的圖標&#xff0c;用戶可根據需要在幻燈片中插入所需的圖標。 二&#xff0c;實戰&#xff1a;更改銷…

幾個用于序列化的代碼片段

參考JavaScriptSerializer,一般用來做JSON格式化http://msdn.microsoft.com/zh-cn/library/system.web.script.serialization.javascriptserializer.aspx http://msdn.microsoft.com/zh-cn/library/system.web.script.serialization.javascriptconverter.aspxDataContractSeria…

桌面圖標擺放圖案_用圖標制作醒目的圖案

桌面圖標擺放圖案Level up your video calls with a custom backdrop created using Noun Project icons.使用使用Noun Project圖標創建的自定義背景來升級視頻通話。 The only thing more visually pleasing than a well-designed icon is a neat, eye-catching pattern made…

3個多月,近3000人參與的源碼共讀,誠邀加入~

大家好&#xff0c;我是若川。眾所周知&#xff0c;從8月份開始&#xff0c;我組織了源碼共讀活動&#xff0c;每周學習200行左右的源碼&#xff0c;到現在持續了3個多月&#xff0c;堅持答疑解惑。幫助了不少人&#xff0c;還是挺開心的。另外&#xff0c;涌現了很多優秀的讀者…

upc 組隊賽18 STRENGTH【貪心模擬】

STRENGTH 題目鏈接 題目描述 Strength gives you the confidence within yourself to overcome any fears, challenges or doubts. Feel the fear and do it anyway! If you have been going through a rough time and feel burnt out or stressed, the Strength card encourag…

JSONNull

最近用JSONObject&#xff0c;感覺比xml好用一些&#xff0c;json的打包和解包都比較清晰和容易&#xff0c;最近遇到一個問題&#xff0c;將一個JSON對象解析&#xff0c;存到hashmap中去&#xff0c;然后再從hashmap取出數據&#xff0c;遇到jsonnull的問題&#xff0c;本以為…

“這張圖告訴你什么?”

For data to be impactful, it must be understood.為了使數據具有影響力&#xff0c;必須理解它。 I’ve happily spent hundreds and hundreds of hours of my life watching users misunderstand data visualizations. I’m strangely hooked on it.我快樂地度過了數百個小…

我們從 UmiJS 遷移到了 Vite

大家好&#xff0c;我是若川。最近組織了源碼共讀活動&#xff0c;感興趣的可以點此加我微信ruochuan12 進群參與&#xff0c;每周大家一起學習200行左右的源碼&#xff0c;共同進步。已進行三個月了&#xff0c;很多小伙伴表示收獲頗豐。我們從 UmiJS遷移到 Vite 已經上線半年…

將DataTable的內容以EXCEl的形式導出到本地

1.在搞項目的時候一般會遇到&#xff0c;將GridView或者Repeater的內容以Excel的形式保存到本地&#xff0c;即導出功能。我總結了兩個方法。 方法一&#xff1a; 1 DataTable dt query.GetItems().GetDataTable();2 if (dt ! null)3 {4 …

智能家居數據庫設計_設計更智能的數據表

智能家居數據庫設計重點 (Top highlight)Data tables are hard. There are many different ways to think about them. So, naturally, the first step would be to figure out what your users need.數據表很難。 有許多不同的方式來考慮它們。 因此&#xff0c;自然地&#x…

可能是全網首個前端源碼共讀活動,誠邀你加入一起學習

大家好&#xff0c;我是若川。眾所周知&#xff0c;從8月份開始&#xff0c;我組織了源碼共讀活動&#xff0c;每周學習200行左右的源碼&#xff0c;到現在持續了3個多月&#xff0c;堅持答疑解惑。幫助了不少人&#xff0c;還是挺開心的。另外&#xff0c;涌現了很多優秀的讀者…

vsftpd 的配置項目

基本配置說明&#xff1a; 1&#xff09;local_root/ftpfile(當本地用戶登入時&#xff0c;將被更換到定義的目錄下&#xff0c;默認值為各用戶的家目錄) 2&#xff09;anon_root/ftpfile(使用匿名登入時&#xff0c;所登入的目錄) 3&#xff09;use_localtimeYES(默認是GMT時…

線段樹專輯——pku 3667 Hotel

http://poj.org/problem?id3667 哈哈&#xff0c;經典中的經典題啊。利用線段樹求最大連續空閑區間&#xff0c;并返回空閑區間的起點坐標。 View Code 1 #include<iostream> 2 #include<string> 3 #include<algorithm> 4 using namespace std; 5 6 …

houseparty不流暢_重新設計Houseparty –用戶體驗案例研究

houseparty不流暢Houseparty has become very popular during the COVID-19 period because it helps you connect with others in a fun way. The concept is simple, you open the app and jump on a video call with your friends. You can even play online games with the…

你不知道的 Node.js 工具函數

從類型判斷說起在 JavaScript 中&#xff0c;進行變量的類型校驗是一個非常令人頭疼的事&#xff0c;如果只是簡單的使用 typeof 會到各種各樣的問題。舉幾個簡單的&#x1f330;&#xff1a;console.log(typeof null) // object console.log(typeof new Array) // object cons…

Java應用集群下的定時任務處理方案(mysql)

今天來說一個Java多機部署下定時任務的處理方案。 需求: 有兩臺服務器同時部署了同一套代碼&#xff0c; 代碼中寫有spring自帶的定時任務&#xff0c;但是每次執行定時任務時只需要一臺機器去執行。 當拿到這個需求時我腦子中立馬出現了兩個簡單的解決方案&#xff1a; 利用ip…

概念驗證_設置成功的UX概念驗證

概念驗證用戶體驗/概念證明/第1部分 (USER EXPERIENCE / PROOF OF CONCEPT / PART 1) This is the first article of a four-part series. Please read Part 2 and Part 3.這是由四個部分組成的系列文章的第一篇。 請閱讀 第2 部分 和 第3部分 。 How do today’s top UX desi…

從 vue3 和 vite 源碼中,我學到了一行代碼統一規范團隊包管理器的神器

1. 前言大家好&#xff0c;我是若川。最近組織了源碼共讀活動&#xff0c;感興趣的可以加我微信 ruochuan12 參與&#xff0c;每周大家一起學習200行左右的源碼&#xff0c;共同進步。已進行四個月了&#xff0c;很多小伙伴表示收獲頗豐。想學源碼&#xff0c;極力推薦之前我寫…

什么事接口

假設你設計一個和人交流的程序。 先建立一個接口 interface 人 //定義接口&#xff0c;它代表一個人&#xff0c; {void Hello(); }//接口虛函數&#xff0c;用來跟這個人說話 但不同的人有不用的交流方式&#xff0c;具體方式用類來實現&#xff0c;比如。 class 美國人&#…