GCC/G++/Clang基本用法
阿新 • • 發佈:2019-01-10
編譯器方面的幾個命令
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)