gcc 常用命令(逐渐完善)
首先適用一個簡單的示例程序,如下:
//test.c #include <stdio.h> int main(void) {printf("Hello gcc!\n"); }這個程序直接編譯使用
gcc test.c -o test即可,其中-o的意思是生成后面的文件。
而實際上編譯過程是分為以下幾個子過程的:
- 預處理(Preprocessing)
- 編譯(Compilation)
- 匯編(Assembly)
- 鏈接(Linking)
我們可以一步一步執行,來觀察每一步結果
1、預處理過程(Preprocessing):
gcc -E test.c -o test.i 或 gcc -E test.c這步可以輸出test.i文件,存放test.c講過預處理之后的代碼。
如果時候后者,則直接在命令窗口顯示預處理的結果。
gcc的-E選項可以讓編譯器在預處理后就停止,并輸出結果。
?
2、編譯為匯編代碼(Compolation)過程:
通過對預處理結果test.i文件進行編譯,可以生成匯編代碼
gcc -S test.i -o test.sgcc 的-S選項表示在程序編譯期間,在生成匯編代碼后停止,-o輸出匯編代碼文件
?
3、匯編過程(Assembly):
對于上一屆段生成的test.s 文件,gas匯編器負責將其編譯為目標文件,如下:
gcc -c test.s -o test.o在這個生成文件中我們已經沒有辦法在詳細看了,因為它已經是二進制代碼
?
4、鏈接過程(Linking):
gcc 鏈接器是gas 提供的,負責將程序的目標文件與所需的所有附加的目標文件連接起來,最終形成執行文件,包含靜態鏈接庫和動態鏈接庫。
對于上一階段生成的test.o文件,將其與C標準輸入輸出庫進行鏈接,最終生成test
gcc test.o -o test在命令階段即可運行./test來輸出結果了。
?
轉載于:https://www.cnblogs.com/bearcat/archive/2012/05/03/2480454.html
總結
以上是生活随笔為你收集整理的gcc 常用命令(逐渐完善)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: UVALive 4216 Pole P
- 下一篇: 【转】如何选好Android开发书籍和教