轉 linux載入動態庫問題

2021-09-25 23:11:16 字數 1009 閱讀 2978

本文**:

感謝原作者分享。

在了解/etc/ld.so.conf.d/目錄下檔案的作用之前,先介紹下程式執行是載入動態庫的幾種方法:

第一種,通過ldconfig命令

ldconfig命令的用途, 主要是在預設搜尋目錄(/lib和/usr/lib)以及動態庫配置檔案/etc/ld.so.conf內所列的目錄下, 搜尋出可共享的動態鏈結庫(格式如lib*.so*), 進而建立出動態裝入程式(ld.so)所需的連線和快取檔案. 快取檔案預設為/etc/ld.so.cache, 此檔案儲存已排好序的動態鏈結庫名字列表.

這裡面涉及到的關鍵內容有命令:ldconfig,配置檔案目錄:/etc/ld.so.conf.d,配置檔案在/etc/ld.so.conf內容由使用者編輯,緩衝檔案/etc/ld.so.cache。下面舉個例子,比如你在部署軟體時,有些動態庫安裝在exe目錄下,可以通過如下方法實現,

1)配置exe.conf檔案,裡面加一行~/exe,然後將該檔案放到/etc/ld.so.conf.d目錄下;

2)在/etc/ld.so.conf檔案中增加一行include ld.so.conf.d/exe.conf

3)執行 ldconfig命令

之後程式執行時,會自動增加在exe目錄中搜尋動態庫。

第二種,通過ld_library_path環境變數

可以通過在.bashrc或者.cshrc中配置該環境變數,ld_library_path的意思是告訴loader在哪些目錄中可以找到共享庫. 可以設定多個搜尋目錄, 這些目錄之間用冒號分隔開.

同樣是上面的例子,可以通過以上的方法來實現

在.bashrc或.cshrc中增加一行,export ld_library_path = ~/exe:$ld_library_path即可。

第三種,通過編譯選項-wl, -rpath指定動態搜尋的路徑

-wl選項告訴編譯器將後面的引數傳遞給鏈結器。

通過上面的介紹,對/etc/ld.so.conf.d/的作用就比較清晰了。

linux如何動態載入動態庫

1.定義函式指標型別 要根據動態庫中藥使用的函式,在外面定義同樣型別的函式指標型別,供以後使用 typedef unsigned long popendev in unsigned long int 2.定義函式指標 popendev opendev 3.動態載入動態庫 handle sohandl...

Linux下動態庫的載入路徑問題

libiconv.so.2 cannot open shared objectroot賬戶登入驗證沒有問題,那就是許可權問題 vim etc ld.so.conf 檢視是否有使用者的動態庫載入路徑,如果存在刪除即可 最後在命令列ldconfig1.編譯目標 時指定的動態庫搜尋路徑 2.環境變數ld ...

linux共享庫動態載入

首先設想一種情況,我們需要將某個功能做成可配置的,比如近期再弄的圖形系統,風格應該是可配置的 在配置檔案中用字串記錄使用到的 畫法 庫 這個 畫法 就比如windows裡面的開始按鈕,windows經典 風格是乙個矩形,而 windows xp 風格則是乙個圓角矩形,它們使用的繪圖方法當然不一樣 改...