gcc常用編譯選項及相關知識

                                                       Linux   gcc編譯常用編譯命令

                                                                                  謝凡凡 2010-10-28  於西安高新區冉科公司

gcc命令格式:gcc [options][filename]

 

-x language        指定使用的語言(cc++或彙編)

-c                         只對文件進行編譯和彙編,生成.o目標文件,但不進行鏈接操作

-S                        只對文件進行編譯,但不彙編和鏈接,生成彙編文件.s

-E                         只對文件進行預處理,但不編譯彙編和鏈接,

-o [file1] file2   將文件file2編譯成可執行文件file1

-L library            指定所使用的庫文件的路徑

-I directory         include文件的路徑

-w                        禁止警告信息

-pedantic            嚴格要求符合ansi標準

-Wall                   顯示警告信息

-g                          插入調試信息,便於調試

-p                          產生prof所需的信息

-pg                        產生grpof所使用信息

-O(O1)                對編譯出的代碼進行優化

-O2                       -O高一級的優化

-O3                       產生更高級別的優化

-v                          顯示gcc版本

-m***               根據不同的微處理器進行優化

 

gcc優化代碼:-O1,-O2,-O3

優點:代碼優化,程序運行更快

缺點:

  1. 優化級別越高,編譯時間越長(提示:開發時不要優化,最終發行時,才進行優化)

  2. 優化級別越高,越消耗內存

  3. 使用優化選項,調試不方便

 

高級gcc選項:

   管理大型項目最好用make

  1. 指定查找路徑

    Eg:包含zw.h,在路徑/usr/include/zw

    gcc –Wall –I/usr/include/zw –o test test.c

     

    指定鏈接庫,給出鏈接庫的路徑,並告訴鏈接庫的名字:

    gcc –L/usr/x11/lib –Wall –o test test.c –lx11

  2. 鏈接庫

    程序中鏈接庫,使用-l選項,鏈接庫可以是靜態的,也可以是動態的。

    鏈接數學庫

    gcc –o test test.c –lm

  3. 使用管道

    管道實現的是使管道前的輸出成爲管道後的輸入(一個程序的輸出作爲另外一個程序的輸入)

    gcc  -pipe –o testtest.c

     

gcc編譯流程:

  1. C預處理器cpp

    C預處理器cpp用來完成宏的求值、條件編譯以及其它在編譯前完成的工作。可以完成:解釋宏,處理包含文件,處理#if#ifdef等。通常gcc自動調用cpp,也可以通過gcc –E調用。

  2. gun連接器ld

    連接器將許多獨立的模塊組合成爲一個可執行文件,gcc自動調用ld,也可以手動調用ld,更好控制連接過程。

  3. GUN彙編器as

    Gcc編譯產生彙編代碼,as處理彙編代碼,得到目標文件二進制文件),最終生成可執行文件。通常情況下gcc調用。

        4、文件處理器ar

可以使用ar程序建立靜態庫,把幾個小文件組合成一個大文件。建立靜態庫時,必須把多個.o文件組合成一個單獨的.a文件。

        5、庫顯示ldd

查看一個可執行程序使用的共享庫。

Eg:ldd ./test

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