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

熱點內容
命令行打開u盤 瀏覽:248
有什麼測身高的app安卓 瀏覽:365
通過買東西來解壓 瀏覽:338
游戲運行文件解壓到哪個盤 瀏覽:119
銀行業務程序員要注意什麼 瀏覽:391
怎麼看壓縮機牌子的 瀏覽:900
安卓手機怎麼設置網址黑名 瀏覽:312
女超人全在哪個App可以看 瀏覽:394
可樂優品app圖標長什麼樣子 瀏覽:871
iphone米家app怎麼掃碼 瀏覽:576
servqual具體演算法 瀏覽:288
怎麼在app關閉閃付 瀏覽:457
一個壓縮文件能解壓多久 瀏覽:573
如何在光遇中知道自己被拉黑安卓 瀏覽:665
c跨平台開發技術指南pdf 瀏覽:546
演算法分析師就業人數圖 瀏覽:821
安卓手機相冊為什麼看不到照片 瀏覽:329
linux如何更新python版本 瀏覽:360
pdf文件打馬賽克 瀏覽:60
模板提高編譯速度 瀏覽:147