GCC編譯器筆記

簡介

目前在Linux下最常用的C語言編譯器是GCC(GUN Compiler Collection).是GUN項目中符合ANSI C標準的編譯系統。

能夠編譯C、C++、Object C等語言編寫的程序,可以通過不同的前端模塊來支持各種語言,如JAVA等。

基本常用參數

GCC編譯器的調用參數有100多個,介紹幾個最基本常用的參數。

GCC的基本用法

gcc [options] [filenames]

options爲編譯器需要的參數,filenames爲相關文件的名稱。

  • -c

只編譯,不鏈接成爲可執行文件,生成.o後綴的目標文件,通常用於編譯不包含主程序的子程序文件。

  • -o

確定輸出文件的名稱(不能與源文件同名),不給名稱默認爲a.out。

  • -g

生產符號調試工具(GUN的GDB)所必要的符號訊息,要對源碼進行調試,必須加入

  • -O

對程序進行優化編譯、鏈接,但編譯、鏈接的速度變慢

  • -O2

比-O更好的優化編譯、鏈接,但更加慢

GCC在編譯不符合ANSI/ISO C語言標準的源碼時,加上-pedantic選項,使用了拓展語法的地方會產生相應的警告,但不能保證程序完全符合兼容ANSI/ISO C標準。

-Wall選項。使GCC儘可能產生多的警告信息。

-Werror選項,將所有警告當作錯誤處理。

調試

如果在編譯時生成調試符號信息,可以使用GCC的-g或-ggdb選項。GCC在產生調試符號採用了分級,在-g選項後附加參數1、2、3來指定在代碼中計入調試信息的多少,默認2,-g2。3最詳細,1最少。

調試選項會使生成的二進制文件的大小劇增,增加程序在執行時的開銷,盡在軟件開發和調試階段使用。

GCC還支持其他調試選項-p、-pg,他們會將剖析(Profiling)信息加入到最終生成的二進制代碼中,對找出程序性能的瓶頸有幫助。

-p選項:會在生成的代碼中加入通用剖析工具Prof能夠識別的統計信息

-pg選項:生成只有GUN剖析工具Gprof才能識別的統計信息

優化

-O、-O2能夠程序帶來更好的執行性能

但在以下場合避免優化代碼

  • 程序開發時
  • 資源受限時(優化會增加執行代碼的體積)
  • 跟蹤調試時

編譯基本流程

預處理Pre-Processing

編譯Compiling

彙編Assembling

鏈接Linking

其他編譯工具

C++編譯器G++

EGCS

F2C和P2C(Fortran代碼轉C代碼,Pascal代碼轉C代碼)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章