可執行檔案和動態庫之間的區別

2021-10-10 00:20:45 字數 344 閱讀 2416

可執行檔案和動態庫之間的區別,很容回答:可執行檔案中有main函式,動態庫中沒有main函式,可執行檔案可以被程式執行,動態庫需要依賴程式呼叫者。

在可執行檔案的所有符號中,main函式是乙個很特別的函式,對c/c++程式開發人員來說,main函式是整個程式的起點;但是,main函式卻不是程式啟動後真正首先執行的**。

除了由程式設計師編寫的源**編譯成目標檔案進而鏈結到程式記憶體對映,還有一部分機器指令**是在鏈結過程中新增到程式記憶體對映中。

比如,程式的啟動**,放在記憶體對映的起始處,在執行main函式之前執行以及在程式終止後完成一些任務

編譯動態庫時,鏈結器沒有新增這部分**。這是可執行檔案和動態庫之間的區別。

編譯生成動態庫 鏈結動態庫生成可執行檔案

折騰了一天編譯 動態庫的問題,整理一下 參考 現有4個檔案 head.h 庫標頭檔案 source1.cc 庫原始檔1 source2.cc 庫原始檔2 include stdio.h include stdlib.h include head.h int main 庫標頭檔案head.h裡是庫原始...

Linux下檢視可執行檔案 動態庫的ELF頭等資訊

用法 readelf elf file s 作用 和windows下的pe檔案類似,elf檔案是linux系統下可執行檔案 動態庫檔案 靜態庫檔案的標準格式。有時候我們需要檢視elf檔案的頭資訊,或者動態庫檔案的匯出函式等,這時候readelf命令的作用就來了。例子 查詢elf檔案頭資訊。如下是表明...

06 彙編和可執行檔案

彙編和機器碼是一對一一的關係,每個彙編指令都有唯一的一條機器碼與之對應,所以彙編約等於機器碼 源 編譯 彙編 鏈結 鏈結庫檔案 源 經過編譯後翻譯成一 一對應的的彙編 並不是每句源 都會翻譯成彙編 編譯器會自動進行優化廢 不會翻譯 會生成乙個.obj檔案但這個檔案並不是可執行的,因為這些彙編 只是對...