日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

目标代码文件、可执行文件和库

發(fā)布時間:2025/6/15 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 目标代码文件、可执行文件和库 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

C編程的基本策略是使用程序?qū)⒃创a轉(zhuǎn)換為可執(zhí)行文件,此文件包含可運行的機(jī)器語言代碼。C分兩步完成這一工作:編譯和鏈接。編譯器將源代碼轉(zhuǎn)換為中間代碼,連接器將此中間代碼與其他代碼相結(jié)合來生成可執(zhí)行文件。C使用被劃分為兩部分的這一方法使程序便于模塊化,你可以分別編譯各個模塊,然后使用連接器將編譯過的模塊結(jié)合起來。這樣,如何需要改變一個模塊,則不必重新編譯所有其他模塊。同時,鏈接器將您的程序與編譯的庫代碼結(jié)合起來。

? ? 中間文件的形式有多種選擇。最一般的選擇,同時也是我們這里講述的實現(xiàn)方式所采取的選擇,是將源代碼轉(zhuǎn)換為機(jī)器代碼。將結(jié)果放置在一個目標(biāo)代碼文件(或簡稱目標(biāo)文件)中(這里假定您的源代碼由單個文件組成)。雖然目標(biāo)文件包含機(jī)器語言代碼,但該文件還不能運行。目標(biāo)文件包含源代碼的轉(zhuǎn)換結(jié)果,但它還不是一個完整的程序。

? ? 目標(biāo)代碼文件中所缺少的第一個元素是一種叫做啟動代碼(Start-up code)的東西,此代碼相當(dāng)于您的程序和操作系統(tǒng)之間的接口。例如你可以在dos 或Linux下運行一個 IBM PC 兼容機(jī),在兩種情況中硬件是相同的,所以都會使用同樣的目標(biāo)代碼,但是 DOS與Linux要使用不用的啟動代碼,因為這兩種系統(tǒng)處理程序的方式不同的。

所缺少的第二個元素是庫例程的代碼。幾乎所有C程序都利用標(biāo)準(zhǔn)庫中所包含的例程(稱為函數(shù))。例如,前面的concrete.c使用了函數(shù)printf()。目標(biāo)代碼文件不包含這一函數(shù)的指令。實際代碼存儲在另一個稱為“庫”的文件中,庫文件中包含許多函數(shù)的目標(biāo)代碼。

? ? 鏈接器的作用是將這3個元素(目標(biāo)代碼、系統(tǒng)的標(biāo)準(zhǔn)啟動代碼和庫代碼)結(jié)合在一起,并將他們存放在單個文件,即可執(zhí)行文件中。對庫代碼來說,鏈接器只從庫中提取您所使用的函數(shù)所需的代碼(見圖1.4所示)



簡而言之,目標(biāo)文件和可執(zhí)行文件都是由機(jī)器語言指令組成的。但目標(biāo)文件只包含您所編寫的代碼轉(zhuǎn)換成的機(jī)器語言,而可執(zhí)行文件還包含您所使用的庫例程以及啟動代碼。

總結(jié)

以上是生活随笔為你收集整理的目标代码文件、可执行文件和库的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。