gcc和g++的用法

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

 

2g++關鍵參數介紹

上文在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 生成文件關聯信息。包含目標文件所依賴的全部源代碼

相關文章
相關標籤/搜索