目標文件是由一個名為編譯器的程序生成的計算機文件,它包含數據和指令。編譯器將編程語言源代碼轉換為中間的機器可讀形式,即目標代碼。較小的程序可以在單個目標文件中編譯,而較大的程序通常被編譯成具有相關功能的幾個...
目標文件是由一個名為編譯器的程序生成的計算機文件,它包含數據和指令。編譯器將編程語言源代碼轉換為中間的機器可讀形式,即目標代碼。較小的程序可以在單個目標文件中編譯,而較大的程序通常被編譯成具有相關功能的幾個文件。這些單獨的目標文件通過一個鏈接器連接起來,并添加操作系統特定的信息,以形成一個可執行程序。通常情況下,一個目標文件用“.obj”文件擴展名表示。這些文件有幾種不同的格式,但是,最常見的是Intel?Relocatible Object Module Format(OMF),以及Windowsreg和UNIX?System V的通用對象文件格式(COFF)。在許多INIX?系統中,可執行和可鏈接格式(ELF)已取代COFF。無論格式如何,一個對象文件通常包含三種類型的信息與其它程序模塊進行交互。對外部引用開放的過程和數據都被賦予名稱,可以從其它模塊調用它們。同樣,對模塊外信息的引用也會被標記,但不指定名稱。當文件被鏈接時,未命名的引用將被賦予在中給定的名稱最初定義它們的模塊。本地名稱用于在模塊中單獨引用的指令和數據。并非所有可鏈接的代碼都存儲為對象文件。庫是作為目標代碼存儲的預編譯例程的集合。它們的生成方式與目標文件基本相同,對存儲經常調用的過程。當鏈接器在其他對象文件中找不到引用時,它會自動在庫文件中搜索它。大多數編程語言的實現都帶有一個標準函數庫通過動態鏈接,一個對象文件可以被多個正在執行的程序同時使用。與鏈接時將對象代碼綁定到程序不同,它是在加載程序時或在運行時引用過程時檢索的。在Windows?環境中,這些被稱為動態鏈接庫,用擴展名“.dll”。與Unix?類似的系統通常將這種類型的文件稱為動態共享對象(DSO)。這種類型的對象文件也可以用于特定的程序,并且是該程序安裝的一部分
-
發表于 2020-08-06 21:34
- 閱讀 ( 3202 )
- 分類:電腦網絡