linux動態庫載入三種方式及先後順序

2021-10-12 07:33:31 字數 937 閱讀 9033

方法一:在配置檔案 /etc/ld.so.conf 中指定動態庫搜尋路徑。每次編輯完該檔案後,都必須執行命令 ldconfig 使修改後的配置生效 。我們通過例 1 來說明該方法。

例 1 :

我們通過以下命令用源程式 pos_conf.c (見程式 1 )來建立動態庫 libpos.so ,

#gcc –fpic -shared -o libpos.so pos_conf.c

接著通過以下命令編譯 main.c (見程式 2 )生成目標程式 pos 。

#gcc -o pos main.c -l. -lpos

方法二:通過環境變數 ld_library_path 指定動態庫搜尋路徑。

方法三:在編譯目標**時指定該程式的動態庫搜尋路徑。

還可以在編譯目標**時指定程式的動態庫搜尋路徑。 -wl, 表示後面的引數將傳給 link 程式 ld (因為 gcc 可能會自動呼叫ld )。這裡通過 gcc 的引數 「-wl,-rpath,」 指定(如例 3 所示)。當指定多個動態庫搜尋路徑時,路徑之間用冒號 " : " 分隔。

例 3 :

我們通過以下命令用源程式 pos.c (見程式 4 )來建立動態庫 libpos.so 。

#gcc -c pos.c

#gcc -shared -fic -o libpos.so pos.o

因為我們需要在編譯目標**時指定可執行檔案的動態庫搜尋路徑,所以需要用 gcc 命令重新編譯源程式 main.c( 見程式 2) 來生成可執行檔案 pos 。

#gcc -o pos main.c -l. -lpos -wl,-rpath=.:…:lib

搜尋動態庫的先後順序

編譯目標**時指定的動態庫搜尋路徑

ld_library_path

/etc/ld.so.cache

default path /lib, and then /usr/lib.

字型載入三種方式

這是一篇很簡短的文章,介紹了 ios 自定義字型載入的三種方式。之後直接使用即可 void staticload void dynamicload else self dynamicfontlabel font uifont fontwithname fontname size 50 cfrelea...

類載入三種方式

命令列啟動應用時,jvm初始化載入 class.forname classloader.loadclass 動態載入 class.forname 將類的.class檔案載入到jvm中之外,還會對類進行解釋,執行類中的static塊 classloader.loadclass 只幹一件事情,就是將.c...

EF 三種載入方式

ef資料載入三種方式 延遲載入 飢餓載入 顯示載入 ef中預設是開啟延遲載入 延遲載入 lazy loading 和 的商品列表一樣,下拉重新整理,按需載入。飢餓載入 eager loading 載入父物件時同時載入子物件。顯式載入 explicitly loading 當我們禁用了延遲載入,仍然可...