Linux的發行版中包含了很多軟體開發工具. 它們中的很多是用於 C 和 C++應用程式開發的. 本文介紹了在 Linux 下能用於 C 應用程式開發和調試的工具. 本文的主旨是介紹如何在 Linux 下使用 C 編譯器和其他 C 編程工具, 而非C 語言編程的教程.
Linux編程工具GNU C 編譯器
Linux編程工具GNU C 編譯器(GCC)是一個全功能的 ANSI C 相容編譯器. 如果你熟悉其他動作系統或硬體平台上的一種 C 編譯器, 你將能很快地掌握 GCC. 本節將介紹如何使用 GCC 和一些 GCC 編譯器最常用的選項.
Linux編程工具使用 GCC
通常後跟一些選項和檔案名稱來使用 GCC 編譯器. gcc 命令的基本用法如下:
gcc [options] [filenames]
命令列選項指定的操作將在命令列上每個給出的檔案上執行. 下一小節將敘述一些你會最常用到的選項.
Linux編程工具GCC 選項
GCC 有超過100個的編譯選項可用. 這些選項中的許多你可能永遠都不會用到, 但一些主要的選項將會頻繁用到. 很多的 GCC 選項包括一個以上的字元. 因此你必須為每個選項指定各自的連字號, 並且就象大多數 Linux 命令一樣你不能在一個單獨的連字號後跟一組選項. 例如, 下面的兩個命令是不同的:
gcc -p -g test.c
gcc -pg test.c
第一條命令告訴 GCC 編譯 test.c 時為 prof 命令建立剖析(profile)資訊並且把調試資訊加入到可執行檔檔案裡. 第二條命令只告訴 GCC 為 gprof 命令建立剖析資訊.
當你不用任何選項編譯一個程式時, GCC 將會建立(假定編譯成功)一個名為 a.out 的可執行檔. 例如, 下面的命令將在目前的目錄下產生一個叫 a.out 的檔案:
gcc test.c
你能用 -o 編譯選項來為將產生的可執行檔指定一個檔案名稱來代替 a.out. 例如, 將一個叫 count.c 的 C 程式編譯為名叫 count 的可執行檔, 你將輸入下面的命令:
gcc -o count count.c
Linux編程工具GCC 同樣有指定編譯器處理多少的編譯選項. -c 選項告訴 GCC 僅把原始碼編譯為目標代碼而跳過彙編和串連的步驟. 這個選項使用的非常頻繁因為它使得編譯多個 C 程式時速度更快並且更易於管理. 預設時 GCC 建立的目標代碼檔案有一個 .o 的副檔名.
-S 編譯選項告訴 GCC 在為 C 代碼產生了組合語言檔案後停止編譯. GCC 產生的組合語言檔案的預設副檔名是 .s . -E 選項指示編譯器僅對輸入檔案進行預先處理. 當這個選項被使用時, 前置處理器的輸出被送到標準輸出而不是儲存在檔案裡.
優 化 選 項
當你用Linux編程工具GCC 編譯 C 代碼時, 它會試著用最少的時間完成編譯並且使編譯後的代碼易於調試. 易於調試意味著編譯後的代碼與原始碼有同樣的執行次序, 編譯後的代碼沒有經過最佳化. 有很多選項可用於告訴 GCC 在耗費更多編譯時間和犧牲易調試性的基礎上產生更小更快的可執行檔. 這些選項中最典型的是-O 和 -O2 選項.
-O 選項告訴 GCC 對原始碼進行基本最佳化. 這些最佳化在大多數情況下都會使程式執行的更快. -O2 選項告訴 GCC 產生儘可能小和儘可能快的代碼. -O2 選項將使編譯的速度比使用 -O 時慢. 但通常產生的代碼執行速度會更快.
除了 -O 和 -O2 最佳化選項外, 還有一些低級選項用於產生更快的代碼. 這些選項非常的特殊, 而且最好只有當你完全理解這些選項將會對編譯後的代碼產生什麼樣的效果時再去使用. 這些選項的詳細描述, 請參考 GCC 的指南頁, 在命令列上鍵入 man gcc . 調試和剖析選項
GCC 支援數種調試和剖析選項. 在這些選項裡你會最常用到的是 -g 和 -pg 選項.
-g 選項告訴 GCC 產生能被 GNU 調試器使用的調試資訊以便調試你的程式. GCC 提供了一個很多其他 C 編譯器裡沒有的特性, 在 GCC 裡你能使 -g 和 -O (產生最佳化代碼)聯用. 這一點非常有用因為你能在與最終產品儘可能相近的情況下調試你的代碼. 在你同時使用這兩個選項時你必須清楚你所寫的某些代碼已經在最佳化時被 GCC 作了改動. 關於調試 C 程式的更多資訊請看下一節"用 gdb 調試 C 程式" .
-pg 選項告訴 GCC 在你的程式裡加入額外的代碼, 執行時, 產生 gprof 用的剖析資訊以顯示你的程式的耗時情況. 關於 gprof 的更多資訊請參考 "gprof" 一節.
文章轉載自網管網:http://www.bitscn.com/os/linuxbc/201005/186755.html