gcc基本用法:ios
gcc main.c -o hello
c++
g++基本用法:spa
一、g++編譯流程:code
預處理-->編譯-->彙編-->連接blog
# main.cpp
#include <iostream> using namespace std; int main(void) { cout<<"Hello World!"<<endl; return 0; }
預處理:ci
g++ -E 僅做預處理,不進行編譯、彙編和連接terminal
好比查看某一個文件的預處理過程,命令以下:io
$g++ -E main.cpp編譯
上面命令直接在terminal中顯示預處理過程,若是main.cpp中包含include,例如#include<iostream>,只能看到部分預處理結果;這個只顯示預處理,不生成文件;若是你想查看詳細的預處理,能夠重定向到一個文件中,命令以下:class
$g++ -E main.cpp -o main.i
編譯:
g++ -s 編譯到彙編語言,不進行彙編和連接,即只激活預處理和編譯,生成彙編語言
$g++ -s main.i -o main.s
彙編:
g++ -c 編譯、彙編到目標代碼,不進行連接,即生成目標文件(.o)
$g++ -c main.s -o main.o
連接:
g++ -o
g++ main.o -o main
(注意,若是各個文件有依賴關係,在生成連接文件以前步驟每一個文件單獨操做都沒有問題,可是在連接的時候會考慮依賴關係,因此須要在main.o後面添加依賴文件)
執行:
./main 執行
最後一步,執行-o後面的文件,若是沒有-o,系統會默認生成一個a.out文件(執行./a.out)
一步執行:
g++ main.cpp -o main
2、g++關鍵參數介紹
上文在g++編譯過程當中已經介紹過-E、-S、-c、-o,再簡單介紹-x和-M
-x <語言> 指定其後輸入文件的語言
容許的語言包括:c c++ assembler none
‘none’意味着恢復默認行爲,即根據文件的擴展名猜想源文件的語言
實例以下:
$g++ -x c main.cpp # 編譯出錯,提示:main.cpp:1:19: fatal error: iostream: 沒有那個文件或目錄
$g++ -x c++ main.cpp # 編譯成功
g++ -M main.cpp 生成文件關聯信息。包含目標文件所依賴的全部源代碼