動態庫

動態庫

動態庫又稱動態程式庫英文為DLL,是Dynamic Link Library 的縮寫形式,DLL是一個包含可由多個程式同時使用的代碼和數據的庫,DLL不是執行檔。動態連結提供了一種方法,使進程可以調用不屬於其可執行代碼的函式。函式的可執行代碼位於一個 DLL 中,該 DLL 包含一個或多個已被編譯、連結並與使用它們的進程分開存儲的函式。DLL 還有助於共享數據和資源。多個應用程式可同時訪問記憶體中單個DLL 副本的內容。DLL 是一個包含可由多個程式同時使用的代碼和數據的庫。Windows下動態庫為.dll後綴,在linux下為.so後綴。

存放內容

系統運行過程中所產生的所有信息

原始數據:包括用戶輸入的信息、推理的中間結果和推理過程的紀錄

作用

動態庫中由各種事實、命題和關係組成的狀態,既是推理機選用知識的依據,也是解釋機制獲得推理路徑的來源。

編譯

動態庫 動態庫

生成動態連線庫,假設名稱為libtest.so

gcc x.cy.cz.c-fPIC-shared-olibtest.so

將main.c和動態連線庫進行連線生成執行檔

gcc main.c-L.-ltest-omain

輸出LD_LIBRARY_PATH環境變數,以便動態庫裝載器能夠找到需要的動態庫

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:.

測試是否動態連線,如果列出libtest.so,那么應該是連線正常了

ldd main

後綴名含義

-fPIC:表示編譯為位置獨立的代碼,不用此選項的話編譯後的代碼是位置相關的所以動態載入時是通過代碼拷貝的方式來滿足不同進程的需要,而不能達到真正代碼段共享的目的。

-L.:表示要連線的庫在當前目錄中

-ltest:編譯器查找動態連線庫時有隱含的命名規則,即在給出的名字前面加上lib,後面加上.so來確定庫的名稱

LD_LIBRARY_PATH:這個環境變數指示動態連線器可以裝載動態庫的路徑。

當然如果有root許可權的話,可以修改/etc/ld.so.conf檔案,然後調用 /sbin/ldconfig來達到同樣的目的,不過如果沒有root許可權,那么只能採用輸出LD_LIBRARY_PATH的方法了。

相關詞條

相關搜尋

熱門詞條

聯絡我們