筆記.g++ 編譯選項

有些好用的 g++ 編譯選項每次都看過就忘了,寫下來當作以後的 reference。
基本指令
1 | g++ [options] file... |
file 可以有很多個,.cpp
或 .o
也都可以。
選項
一般
-o file
指定輸出檔名為file
-std=c++xx
指定 c++ 語法版本為xx
-D XXX
-DXXX
等於加上#define XXX
,空格可有可無
編譯
-E
進行預處理,輸出預處理結果。不指定輸出檔名的話直接輸出到 stdout-S
進行預處理和編譯,輸出組合語言檔.s
-c
編譯但不連結,輸出目的檔.o
優化
-O0
-O1
-O2
-O3
-Ofast
一般編譯優化
警告、除錯
-Wall
很多警告-Wextra
更多警告-Wshadow
區域變數跟別人撞名的警告-Wconversion
沒有好好轉型別的警告-fsanitize=address
幫你抓記憶體亂戳-fsanitize=undefined
幫你抓未定義行為-D_GLIBCXX_DEBUG
幫你抓 STL 亂用,編譯時間超級慢
其他
--verbose
變吵。可以用來偷看 include 路徑
TL;DR
競程向編譯指令,最後一行自選。
1 | g++ {file}.cpp -o {file}.out |