Clang比 gcc/g++更人性化代碼出錯提示的C/C++編譯器

編譯器方面的幾個命令

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的編譯選項大部分和gcc相同
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)clang -### min.c -o min-###參數是爲了查看,clang driver到底調用了哪些命令,而且不會執行這些命令詞法分析:clang -cc1 -dump-tokens min.c語法分析:clang -fsyntax-only -Xclang -ast-dump min.c使用clang編譯源文件,錯誤提示相較於C要人性化跟多,方便快速閱讀查找定位。
相關文章
相關標籤/搜索