1. 程式人生 > >GCC/G++/Clang基本用法

GCC/G++/Clang基本用法

編譯器方面的幾個命令

gcc/g++

一. 常用編譯命令選項

常用用法
gcc -Wall test.c -o test

gcc編譯過程

.c                  ->(-E)->    
.i[中間檔案]        ->(-S)->
.s(彙編檔案)        ->(-c)->
.o[機器語言檔案]  ->

1. 無選項編譯連結

> 用法: gcc test.c
> 作用:將test.c預處理、彙編、編譯並連結形成可執行檔案。這裡未指定輸出檔案,預設輸出為a.out。

2. 選項 -o 第四步 連結(Linking)

> 用法: gcc test.c -o test
> 作用:將test.c預處理、彙編、編譯並連結形成可執行檔案test。-o選項用來指定輸出檔案的檔名。

3. 選項 -E 第一步 預處理(Pre-Processing)

> 用法: gcc -E test.c -o test.i
> 作用:將test.c預處理輸出test.i檔案。

4. 選項 -S 第二步 編譯(Compiling)

> 用法: gcc -S test.i
> 作用:將預處理輸出檔案test.i彙編成test.s檔案。

5. 選項 -c 第三步 彙編(Assembling)

> 用法: gcc -c test.s
> 作用:將彙編輸出檔案test.s編譯輸出test.o檔案。

6. 無選項鍊接

> 用法: gcc test.o -o test
> 作用:將編譯輸出檔案test.o連結成最終可執行檔案test。

7. 選項 -O

> 用法: gcc -O1 test.c -o test
> 作用:使用編譯優化級別1編譯程式。級別為1~3,級別越大優化效果越好,但編譯時間越長。

二. 多原始檔的編譯方法

1. 多個檔案一起編譯

> 用法:#gcc testfun.c test.c -o test
> 作用:將testfun.c和test.c分別編譯後連結成test可執行檔案。

2. 分別編譯各個原始檔,之後對編譯後輸出的目標檔案連結。

> 用法:
> gcc -c testfun.c //將testfun.c編譯成testfun.o
> gcc -c test.c   //將test.c編譯成test.o
> gcc -o testfun.o test.o -o test //將testfun.o和test.o連結成test

clang

clang --help
clang file.c -fsyntax-only (check for correctness)
clang file.c -S -emit-llvm -o - (print out unoptimized llvm code)
clang file.c -S -emit-llvm -o - -O3
clang file.c -S -O3 -o - (output native machine code)