gcc/g++ 命令列參數

來源:互聯網
上載者:User

標籤:

這些常用的 gcc/g++ 命令列參數,你都知道嗎?

1. gcc -E source_file.c
-E,只執行到先行編譯。直接輸出先行編譯結果。

2. gcc -S source_file.c 
-S,只執行到原始碼到彙編代碼的轉換,輸出彙編代碼。

3. gcc -c source_file.c
-c,只執行到編譯,輸出目標檔案。

4. gcc (-E/S/c/) source_file.c -o output_filename
-o, 指定輸出檔案名,可以配合以上三種標籤使用。
-o 參數可以被省略。這種情況下編譯器將使用以下預設名稱輸出:
-E:先行編譯結果將被輸出到標準輸出連接埠(通常是顯示器)
-S:產生名為source_file.s的彙編代碼
-c:產生名為source_file.o的目標檔案。
無標籤情況:產生名為a.out的可執行檔。

5. gcc -g source_file.c 
-g,產生供調試用的可執行檔,可以在gdb中運行。由於檔案中包含了調試資訊因此運行效率很低,且檔案也大不少。
這裡可以用strip命令重新將檔案中debug資訊刪除。這是會發現產生的檔案甚至比正常編譯的輸出更小了,這是因為strip把原先正常編譯中的一些額外資訊(如函數名之類)也刪除了。用法為 strip a.out

6. gcc -s source_file.c
-s, 直接產生與運用strip同樣效果的可執行檔(刪除了所有符號資訊)。

7. gcc -O source_file.c
-O(大寫的字母O),編譯器對代碼進行自動最佳化編譯,輸出效率更高的可執行檔。
-O 後面還可以跟上數字指定最佳化層級,如:
gcc -O2 source_file.c
數字越大,越加最佳化。但是通常情況下,自動的東西都不是太聰明,太大的最佳化層級可能會使產生的檔案產生一系列的bug。一般可選擇2;3會有一定風險。

8. gcc -Wall source_file.c
-W,在編譯中開啟一些額外的警告(warning)資訊。-Wall,將所有的警告資訊全開。

9. gcc source_file.c -L/path/to/lib -lxxx -I/path/to/include
-l, 指定所使用到的函數庫,本例中連結器會嘗試連結名為libxxx.a的函數庫。
-L,指定函數庫所在的檔案夾,本例中連結器會嘗試搜尋/path/to/lib檔案夾。
-I, 指定標頭檔所在的檔案夾,本例中先行編譯器會嘗試搜尋/path/to/include檔案夾。

有興趣的朋友可以查看gcc的 manpage,找到更詳細的說明。

gcc/g++ 命令列參數

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.