全球专业中文经管百科,由121,994位网友共同编写而成,共计436,017个条目

動態庫

用手机看条目

出自 MBA智库百科(https://wiki.mbalib.com/)

動態庫(Dynamic Link Library)

目錄

什麼是動態庫

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

動態庫解讀

  (一)存放內容

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

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

  (二)作用

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

  (三)編譯

  生成動態連接庫,假設名稱為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

  (四)尾碼名含義

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

  (2)-L.:表示要連接的庫在當前目錄中

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

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

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

相關條目

本條目對我有幫助0
MBA智库APP

扫一扫,下载MBA智库APP

分享到:
  如果您認為本條目還有待完善,需要補充新內容或修改錯誤內容,請編輯條目投訴舉報

本条目由以下用户参与贡献

刘维燎.

評論(共0條)

提示:評論內容為網友針對條目"動態庫"展開的討論,與本站觀點立場無關。

發表評論請文明上網,理性發言並遵守有關規定。

打开APP

以上内容根据网友推荐自动排序生成

下载APP

闽公网安备 35020302032707号