動態裝入器(dynamic loader)

2021-08-11 02:27:54 字數 994 閱讀 6564

動態裝入器(dynamic loader)負責將動態可執行程式和所有必需的共享庫一起裝入,以使它們能正確執行。

/lib64/ld-linux-x86-64.so.2 即是64位linux系統下的動態裝入器

動態裝入器找到共享庫要依靠兩個檔案 ——/etc/ld.so.conf/etc/ld.so.cache

ld.so.conf 檔案包含乙個所有目錄(/lib 和 /usr/lib 除外,它們會自動包含在其中)的清單,動態裝入器將在其中查詢共享庫。

但是在動態裝入器能「看到」這一資訊之前,必須將它轉換到 ld.so.cache 檔案中。可以通過執行 ldconfig 命令做到這一點,當 ldconfig 操作結束時,您會有乙個最新的 /etc/ld.so.cache 檔案,它反映您對 /etc/ld.so.conf 所做的更改。從這一刻起,動態裝入器在尋找共享庫時會檢視您在 /etc/ld.so.conf 中指定的所有新目錄。

$ ldconfig
ld_library_path

要指示動態裝入器首先檢查某個目錄,請將 ld_library_path 變數設定成您希望搜尋的目錄。多個路徑之間用冒號分隔;例如:

$ export ld_library_path=」/usr/lib/old:/opt/lib」

匯出 ld_library_path 後,如有可能,所有從當前 shell 啟動的可執行程式都將使用 /usr/lib/old 或 /opt/lib 中的庫,如果仍不能滿足一些共享庫相關性要求,則轉回到 /etc/ld.so.conf 中指定的庫。

# ldd命令檢視程式依賴的動態庫,可以判斷是否有動態庫缺失

ldd [程式名]

何謂裝入時動態鏈結,裝入時動態鏈結有何優點?

裝入時動態鏈結是指 使用者源程式編譯後,得到一組目標模組,在裝入記憶體時,採用邊裝入,邊鏈結的方式。即在裝入乙個目標模組時,若發生乙個外部模事件,將引起裝入程式去找出相應的外部目標模組,並將他裝入記憶體。優點主要分為兩點 1 便於修改和更新 對於靜態鏈結,如果需要修改獲更新某個目標模組,需要重新開啟...

靜態鏈結 裝入時動態鏈結和執行時動態鏈結

靜態鏈結 經編譯後所得到的三個目標模組a b c,他們的長度分別為 l m n。在模組a中,有 一條語句call b,用於呼叫模組b。在模組b中,有一條語句call c,用於呼叫模組c。b和c都屬於外部 對相對位址進行修改 乙個裝入程式後,模組b和c的起始位址不再是0,而是l和l m,此時需修改b和...

IK分詞器基礎安裝入門

進入到elasticsearch的安裝目錄下,找到bin目錄。執行裡面的elasticsearch plugin命令,這個命令是管理es中的外掛程式的。ik分詞器就是乙個外掛程式。執行下面這個命令就可以安裝成了,注意ik分詞器的版本要和es的版本一致才行。具體哪個版本可以去github中去找。bin...