鏈結裝載與庫 讀書筆記(二)

2021-07-11 10:28:00 字數 644 閱讀 3451

第四章  靜態鏈結

鏈結  $ld

vma  (  vitual memory address )

lma  (  load memory address )

common 多個弱型別或者弱引用,在鏈結時劃分記憶體我們以最大記憶體為準。

兩種c++  abi 標準  window visual c++  he  gnu 的gcc 標準,兩種互不相容。

為什麼靜態執行庫裡面乙個乙個目標檔案只包含乙個函式,比如libc.a 裡面printf.o 只有printf() 函式, 而strlen.o 裡面只有 .strlen() 函式?

因為 聯結器鏈結動態庫是以.o檔案也就是目標檔案(object file) 為單位的。如果乙個目標檔案中放了多個函式,比如printf.o裡面還有很多其他函式,我們在呼叫printf()時,會把所有同乙個.o檔案的函式都呼叫進去,增大了記憶體空間。因此乙個目標函式只包含乙個函式,然後呼叫哪個函式就鏈結哪個函式的目標檔案,這樣最大的減少了檔案的記憶體空間。

主要摘錄的是書籍中和我工作比較相關的內容。

讀書筆記之《程式設計師的自我修養 鏈結 裝載與庫》

ide一般將編譯和鏈結的過程一步完成,通常將這種編譯和鏈結合併到一起的過程稱為構建 build 預編譯 prepressing 處理源 中以 開頭的預編譯指令 刪除 define 展開所有巨集定義 處理條件預編譯指令,比如 if ifdef 等 處理 include 包含標頭檔案 刪除所有注釋 新增...

讀書筆記之《程式設計師的自我修養 鏈結 裝載與庫》

一 編譯和鏈結 ide一般將編譯和鏈結的過程一步完成,通常將這種編譯和鏈結合併到一起的過程稱為構建 build 預編譯 prepressing 處理源 中以 開頭的預編譯指令 刪除 define 展開所有巨集定義 處理條件預編譯指令,比如 if ifdef 等 處理 include 包含標頭檔案 刪...

裝載 鏈結與庫

第五部分 windows動態鏈結 1 dll函式和變數必須在檔案顯示是匯入還是匯出,declspec dllexport 匯出,declspec dllimport 匯入.建立dll檔案的時候.c檔案生成.dll,lib,exp檔案,然後用.lib檔案和exe中的.c檔案生成的目標檔案鏈結在一起,生...