關於編譯的一些小知識

GNU編譯器g++編譯c++程序:

Windows,進入源代碼所在的路徑下,在命令行中輸入:

 g++ -o test.exe test.cpp

test.cpp編譯生成test.exe可執行文件,如果沒有-o test.exe選項,默認生成a.exe

Linux,進入源代碼所在的路徑下,在命令行中輸入:

g++ -o test test.cpp

test.cpp編譯生成test可執行文件(Linux下文件沒有後綴名,通過文件屬性和執行權限識別),默認生成a.out,可能需要在命令尾部輸入-std=c++0x來支持c++11標準

注意:可添加-Wall選項來開啓所有警告,-w來忽略所有警告(嚴重不推薦)

 

微軟visual studio編譯器編譯c++程序:

Windows,開始->所有程序->visual studio->visual studio tools->運行vs開發人員命令提示,在命令行中輸入:

 cl  /EHsc test.cpp

生成test.exe文件(/EHsc參數來打開標準異常

Linuxvisual studio編譯器

注意:可添加/W4來開啓所有警告

 

分離編譯器編譯源文件的過程

Linuxgcc分步編譯hello world爲例

由上圖可知,hello的c文件到可執行文件經歷了預處理、編譯、彙編、鏈接等幾個過程,下面進行分步編譯過程:

  .c文件經過預處理生成.i文件(將#include裏面的內容添加到.c文件中形成.i文件) 

gcc -o hello.i -E hello.c 

  .i文件編譯生成.s彙編文件

gcc -o hello.s -S hello.i

  .s彙編文件彙編生成.o目標文件(二進制文件)

gcc -o hello.o -c hello.s

  .o目標文件鏈接生成可執行文件(鏈接一些動態靜態庫)

gcc -o hello hello.o

至此生成hello的可執行文件

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章