C 目標檔案和可執行檔案裡面都有什麼

2021-08-28 20:20:59 字數 635 閱讀 7301

編譯器編譯源**後生成的檔案叫做目標檔案。

從檔案結構上來講,目標檔案已經是二進位制檔案。

編譯是針對單個原始檔的,有幾個原始檔就會生成幾個目標檔案,並且在生成過程中不受其他原始檔的影響。也就是說,不管當前工程中有多少個原始檔,編譯器每次只編譯乙個原始檔、生成乙個目標檔案。

動態鏈結庫(dll,dynamic linking library)(windows 下的.dll和 linux 下的.so)和靜態鏈結庫(static linking library)(windows 下的.lib和 linux 下的.a)也是按照可執行檔案的格式儲存的。

在 linux 下,相信很多讀者都遇到過一種叫做segment fault(段錯誤)的錯誤,這種錯誤發生在程式執行期間,在編譯和鏈結時無法檢測,一般都是**的許可權不足導致的。

可執行檔案不再關注具體的檔案結構,而是關注程式的載入和執行過程。

由於可執行檔案在載入時實際上是被對映的虛擬位址空間,所以可執行檔案很多時候又被叫做映像檔案(image)。

在鏈結過程中,鏈結器會將多個目標檔案中的**段、資料段、除錯資訊等合併成可執行檔案中的乙個段。段的合併僅僅是乙個簡單的疊加過程。

原始檔 目標檔案和可執行檔案

1.原始檔 存放程式 的檔案,即我們編輯 的檔案,稱為源 檔案。c語音源程式檔案的擴充套件名為 c 源 檔案是相對目標檔案和可執行檔案而言的 一般使用高階語言寫出來的。2.目標檔案 源 經過編譯所得到的二進位制 稱為目標檔案。目標檔案的擴充套件名為 obj windows 或 o linux 目標檔...

C 呼叫可執行檔案

一,語法 c 提供process類來對本地或遠端程序進行訪問,以及啟動或停止本地程序。更多語法資訊 二,using system using system.collections.generic using system.diagnostics using system.linq using sys...

linux 執行可執行檔案

1 首先,需要了解一下a.out這個目標檔案。a.out在linux下是elf executable linkable format 檔案格式,該目標檔案由乙個檔案頭 段 資料段 已初始化 從定位資訊區 符號表及符號名字字串構成,如下左圖所示,經過鏈結後生成執行檔案如下右圖所示,需要說明的是1 bs...