linux下編譯C++文件基本命令


一個C/C++源代碼要變成一個可執行文件,需要經過預處理(Pre-processing)-編譯(Compiling)-匯編(Assembling)-鏈接(Link)

基本流程為:
test.c --預處理--test.i --編譯-- test.s --匯編-- test.o --鏈接-- test.exe

預處理

-E 選項使用g++/gcc將源代碼預處理后不執行其他動作。
下面的命令將test.cpp預處理,並在標准輸出中顯示:

g++ -E test.cpp 

后面加上 -o 選項表示將源代碼預處理后輸出在指定文件中,比如test.i:

g++ -E test.cpp -o test.i

編譯

-S 選項使用g++/gcc將預處理后的文件編譯,翻譯成匯編代碼。只編譯不匯編
下面的命令將會編譯test.i文件,並自動在當前文件夾生成test.s文件

g++ -S test.i

若要指定其他輸出名,則需 -o 指定,比如生成名為xxx.s的匯編代碼文件

g++ -S test.i -o xxx.s

匯編

-c 選項將編譯生成的test.s文件生成二進制目標代碼
下面的命令將在當前文件夾自動生成test.o的二進制目標代碼文件

g++ -c test.s 

如果要指定輸出文件名,則需 -o 指定,比如生成xxx.o的二進制目標代碼文件

g++ -c test.s -o xxx.o

鏈接

鏈接階段是將相關的目標文件鏈接起來,形成一個整體,生成可執行文件
無選項鏈接
下面的命令會把二進制目標文件test.o所需的相關文件鏈接成一個整體,並在當前文件夾自動生成一個名為a.out的可執行文件

g++ test.o

如果要執行這個可執行文件,需要輸入命令

./a.out

當然也可以指定生成的可執行文件的文件名

g++ test.o -o test.exe

單個源文件直接生成可執行文件

當然g++/gcc也可以直接把源代碼直接生成可執行文件
下面的命令將test.cpp直接在當前文件夾生成a.out可執行文件,若要指定文件名,可使用 -o 選項

g++ test.cpp
g++ test.cpp -o test.exe

多個源文件直接生成可執行文件

也可以將多個源代碼編譯鏈接成一個可執行文件
下面的命令將test.cpp直接在當前文件夾生成a.out可執行文件,若要指定文件名,可使用 -o 選項

g++ test1.cpp test2.cpp 
g++ test1.cpp test2.cpp -o test.exe

一個C/C++源代碼要變成一個可執行文件,需要經過預處理(Pre-processing)-編譯(Compiling)-匯編(Assembling)-鏈接(Link)

基本流程為:
test.c --預處理--test.i --編譯-- test.s --匯編-- test.o --鏈接-- test.exe

預處理

-E 選項使用g++/gcc將源代碼預處理后不執行其他動作。
下面的命令將test.cpp預處理,並在標准輸出中顯示:

g++ -E test.cpp 

后面加上 -o 選項表示將源代碼預處理后輸出在指定文件中,比如test.i:

g++ -E test.cpp -o test.i

編譯

-S 選項使用g++/gcc將預處理后的文件編譯,翻譯成匯編代碼。只編譯不匯編
下面的命令將會編譯test.i文件,並自動在當前文件夾生成test.s文件

g++ -S test.i

若要指定其他輸出名,則需 -o 指定,比如生成名為xxx.s的匯編代碼文件

g++ -S test.i -o xxx.s

匯編

-c 選項將編譯生成的test.s文件生成二進制目標代碼
下面的命令將在當前文件夾自動生成test.o的二進制目標代碼文件

g++ -c test.s 

如果要指定輸出文件名,則需 -o 指定,比如生成xxx.o的二進制目標代碼文件

g++ -c test.s -o xxx.o

鏈接

鏈接階段是將相關的目標文件鏈接起來,形成一個整體,生成可執行文件
無選項鏈接
下面的命令會把二進制目標文件test.o所需的相關文件鏈接成一個整體,並在當前文件夾自動生成一個名為a.out的可執行文件

g++ test.o

如果要執行這個可執行文件,需要輸入命令

./a.out

當然也可以指定生成的可執行文件的文件名

g++ test.o -o test.exe

單個源文件直接生成可執行文件

當然g++/gcc也可以直接把源代碼直接生成可執行文件
下面的命令將test.cpp直接在當前文件夾生成a.out可執行文件,若要指定文件名,可使用 -o 選項

g++ test.cpp
g++ test.cpp -o test.exe

多個源文件直接生成可執行文件

也可以將多個源代碼編譯鏈接成一個可執行文件
下面的命令將test.cpp直接在當前文件夾生成a.out可執行文件,若要指定文件名,可使用 -o 選項

g++ test1.cpp test2.cpp 
g++ test1.cpp test2.cpp -o test.exe

使用C++11標准編譯

如果要使用C++11版本特性,則需要使用 -std=c++11 選項

g++ -std=c++11 test.cpp -o test.exe

待續。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM