導航:首頁 > 源碼編譯 > 編譯後鏈接Link的作用是

編譯後鏈接Link的作用是

發布時間:2024-11-10 23:48:47

⑴ c++ 編譯 鏈接是怎麼回事

compile和link是大多數語言從原代碼生成可執行程序的兩個步驟。

之所有有這兩個步驟因為幾乎任何一個程序都不是用一個原文件寫出來的。compile是先針對單獨原文件進行處理。link是把compile處理的結果組合成一個完整的可執行文件。

其實C/C++完全也可以一步成型,不需要compile和link兩個步驟,但是那樣的後果就是:一,每次生成可執行程序,必須翻譯全部源代碼;二,C語言的執行庫(printf, scanf這些)必須都以源代碼形式存在。這怎麼樣也說不過去吧。

另外頭文件不屬於compile和link過程,頭文件是預編譯過程的文件。

C/C++語言的完整編譯過程是

一、預編譯

處理#define #if #include這類#開頭的語句,這些稱為預編譯指令。這個過程中會把.h文件和.c/.cpp文件組合成最終交給compile過程的原文件。這個原文件是不包含任何#開頭的語句的。所有#define定義的宏也會被替換。

二、編譯
把上面那個原文件編譯成.o或者VC里是.obj文件。這個文件保存了機器碼化的函數、函數的描述、全局變數的描述、乃至段的描述等等。

三、連接
把可執行程序需要的所有的編譯過程產生的.o或者.obj文件組合到一起。(這里也包括.lib文件,.lib文件件本質上就是打包的.obj文件集合)。另外連接過程還會組合一些其他數據,比如資源、可執行文件頭等等。

⑵ 為什麼我用gcc編譯c程序到最後無法自動生成一個exe程序

gcc 是 Linux 系統下面的 C 語言編譯器。它和 WINDOWS 系統下面的 Microsoft Visual Studio C++ 6.0 不同,在 WINDOWS 系統下面對任何的一個源程序,經編譯、鏈接、到最終生成的所有可執行程序必定都是以 *.exe 結尾的,*.exe 是 WINDOWS 系統下面的可執行程序的後綴;而 gcc 對 C 語言進行編譯,並沒有規定可執行程序的具體名字到底是什麼。舉例如下:
$gcc my_program.c <cr>
如果在命令行中,沒有帶任何參數的話,如果 C 語言源程序沒有任何語法錯誤的話,那麼生成的預設的可執行文件就是:a.out;
$gcc my_program.c -o my_runfile <cr>
如果在命令行中,指定:-o 參數,代表對 my_program.c 進行編譯後,生成的可執行文件名為:my_runfile。

同理,在進行命令行編譯過程中,只要指定了 -o 參數,那麼你後面的可執行文件名,就隨便由你自己決定了,這個就沒有一定之規了。

閱讀全文

與編譯後鏈接Link的作用是相關的資料

熱點內容
windows下編譯python 瀏覽:607
linux藍牙連接 瀏覽:898
安卓qq郵箱格式怎麼寫 瀏覽:431
如何電信租用伺服器嗎 瀏覽:188
編程中計算根號的思維 瀏覽:183
可愛的程序員16集背景音樂 瀏覽:448
軟體代碼內容轉換加密 瀏覽:797
什麼app看電視不要錢的 瀏覽:16
烏班圖怎麼安裝c語言編譯器 瀏覽:280
plc通訊塊編程 瀏覽:923
我的世界伺服器怎麼清地皮 瀏覽:422
ftp伺服器如何批量改名 瀏覽:314
網易我的世界伺服器成員如何傳送 瀏覽:268
公司雲伺服器遠程訪問 瀏覽:633
法哲學pdf 瀏覽:638
清大閱讀app是什麼 瀏覽:447
怎麼用qq瀏覽器整體解壓文件 瀏覽:587
肺組織壓縮15 瀏覽:271
安卓手機為什麼換電話卡沒反應 瀏覽:797
諸子集成pdf 瀏覽:340