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

熱點內容
地鐵逃生伺服器已滿什麼意思 瀏覽:815
androidstudio工程名 瀏覽:427
下載高清圖片用什麼app 瀏覽:936
什麼app可以買裙子 瀏覽:591
大商創源碼210 瀏覽:291
phpwhile跳出循環 瀏覽:245
怎麼壓歲文件夾 瀏覽:889
幫人解壓的說說 瀏覽:740
登記本解壓預約流程 瀏覽:508
springboot載入配置文件源碼 瀏覽:124
程序員旅行箱 瀏覽:235
程序員月薪8萬個稅 瀏覽:510
汽車App深度檢測是什麼 瀏覽:190
python支持的平台 瀏覽:288
串口命令列印 瀏覽:704
神盾加密磁碟評價 瀏覽:92
伺服器瀏覽記錄能看到什麼 瀏覽:116
她說程序員不懂浪漫 瀏覽:1004
反甲被動演算法 瀏覽:102
破解NFC二級加密 瀏覽:301