導航:首頁 > 源碼編譯 > 編譯後鏈接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的作用是相關的資料

熱點內容
網易我的世界怎麼加材質給伺服器 瀏覽:760
app舊版本不更新怎麼操作 瀏覽:368
如何編譯ddwrt 瀏覽:63
命令行讀文件 瀏覽:350
phpjson轉多維數組 瀏覽:910
linuxboot修復 瀏覽:843
程序在線編譯系統的設計與實現 瀏覽:722
電腦c盤記錄存在哪個文件夾 瀏覽:155
演算法分析與設計替換方法 瀏覽:850
老程序員丟失手機 瀏覽:272
新世紀日本語pdf 瀏覽:85
基於單片機的數字示波器 瀏覽:36
登qq伺服器連接中什麼意思 瀏覽:436
表格宏命令 瀏覽:994
肯德基app設定在哪裡 瀏覽:472
蘋果電腦文件夾怎麼添加列印機 瀏覽:701
pythonswagger 瀏覽:235
作業打卡解壓素材 瀏覽:159
pdf導入ibooks 瀏覽:577
xps文件轉pdf 瀏覽:134