1.首先是編寫程式的源**,儲存在乙個檔案中,該檔案的字尾名應為cpp,cxx,.c等(該c是大寫,小寫c代表是c程式,根據c++的版本不同而有一些差異,但基本都識別cpp)。該檔案就是程式的源**檔案。
2.編譯源**,生成目標**檔案。編譯源**用到編譯器,如g++和clang。生成的目標**檔案的字尾名是 .o 。目標**檔案裡的內容是機器語言。
3.鏈結程式。即將目標**與其他**鏈結起來。如c++常用到的庫。最後生成可執行**或者叫可執行檔案。
linux中最常用的編譯器是g++,下面的命令是編譯源**檔案main.cpp,生成可執行檔案a.out。
g++ main.cpp
執行a.out可用以下命令:
./a.out
若要指定生成的可執行檔案的檔名,使用下面的命令:
g++ main.cpp -o test
執行該命令後生成可執行檔案test,以下命令執行該可執行檔案:
./test
同時編譯多個原始檔:
g++ test1.cpp test2.cpp
其中需要注意的是,該命令不會保留目標**檔案main.o。因此若需要目標**檔案,可以執行以下命令:
g++ -c main.cpp
目標**檔案都是機器語言,雖然看不懂,但保留目標**檔案有個好處就是當同時編譯了多個cpp檔案時,此時若修改了其中的乙個cpp檔案,不需要重新編譯全部原始檔,只需編譯被修改的原始檔,然後將它與其他原始檔的目標**檔案鏈結即可。
如有三個檔案:main.cpp head.cpp head,h
main.cpp:
#include#include#include"head.h"
using namespace std;
int main()
head.cpp:
#include#include"head.h"
#includeusing namespace std;
void print()
int sum(int x,int y)
head.h:
void print();
int sum(int x,int y);
當修改了head.cpp檔案時,只需執行以下命令即可:
g++ head.cpp main.o
前提是存在main.o。
windows:
參考:c++ primer plus
C 編譯,執行過程 具體解釋。
要更深入了解c 必需要知道乙個程式從開始到結束都幹了些什麼,怎麼幹的。所以我從c 編譯到執行過程,解析下程式是怎麼跑的。首先,初略的說一下之前c 的編譯過程。c 編譯過程包含預編譯 彙編 編譯 鏈結。稱為乙個可執行檔案。windows平台下為.exe檔案 預編譯主要展開包括的標頭檔案,巨集定義等操作...
語言編譯的步驟及裝入執行過程
一 預處理 主要功能 處理程式中的預處理語句 1.檔案包含 2.巨集的替換 3.條件編譯 二 編譯掃瞄 符號掃瞄 彙編 主要功能 將預處理完的程式掃瞄符號生成,翻譯成彙編 是否變數位址的對映替換在此步中完成的。優化程式 編譯器對程式編譯的優化處理是在何時刻進行的.三 彙編掃瞄 主要功能 將匯程式設計...
C程式編譯執行過程
c語言從源 到可執行檔案的過程 1 編譯預處理 讀取c源 對其中的偽指令 以 開頭的指令 和特殊符號進行處理 偽指令主要包括以下四個方面 1.1 巨集定義指令 define 定義巨集 undef 取消巨集的定義 預定義巨集 標準c中定義了一些物件巨集,這些巨集的名稱以 兩個下劃線 開頭和結尾,並且都...