中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Linux下如何調用dll& .so庫

發布時間:2022-01-26 10:28:22 來源:億速云 閱讀:147 作者:小新 欄目:開發技術

這篇文章主要介紹了Linux下如何調用dll& .so庫,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

dll是Dynamic Link Library的縮寫。DLL是一個包含可由多個程序,同時使用的代碼和數據的庫。

Linux下如何調用dll& .so庫

 {
 void *handle=dlopen("./libdemo4.so",RTLD_LAZY);
 void(*fun)(int)=dlsym(handle,"diamond");
 fun(5);
 dlclose(handle);}

使用libdl.so庫 動態庫加載的原理

動態庫中函數的查找已經封裝成庫libdl.so dlopen 打開一個動態庫 dlsym 在打開動態庫找一個函數 dlclose 關閉動態庫 //dlerror 返回錯誤

注意了 動態庫是可以執行,靜態庫不能執行 但動態庫沒有main,不能獨立執行。 動態庫不會連接成程序的一部分。 程序執行的時候,必須需要動態庫文件。

 ldd  察看程序需要調用的動態庫
  ldd 只能察看可執行文件.
  readelf -h 察看執行程序頭.
  nm   察看庫中的函數符號

3.動態庫的編譯 3.1.編譯 -c -fpic(可選) 3.2.連接 -shared 4.使用動態庫 gcc 代碼 動態庫文件名 gcc 代碼 -l庫名 -L動態庫所在路徑

標準命名規則: lib庫名.so lib庫名.a

  -l 庫名  -L 庫所在路徑

大深坑: 4.1.執行程序怎么加載動態庫? 4.2.動態庫沒有作為執行程序的一部分,為什么連接需要指定動態庫以及目錄? 連接器需要確定函數在動態庫的中的位置

動態庫的加載: 1.找到動態庫 2.加載動態庫到內存 3.映射到用戶的內存空間 系統對動態庫查找規則: /lib /usr/lib 到環境變量LD_LIBRARY_PATH指定的路徑中查找

三.靜態庫的編譯 1.編譯過程(*.a achieve) 1.1.編譯成目標文件 -static 可選 gcc -c -static 代碼文件.c

1.2.歸檔成靜態庫 ar工具 ar -r -t ar -r 靜態庫文件 被歸檔的文件

  nm工具(察看函數符號表)
   nm 靜態庫或者動態庫或者目標文件或者執行文件

1.3.使用靜態庫 gcc 代碼 靜態庫

結晶步驟:

 1.函數等代碼封裝的二進制已經編譯的歸檔文件
 
 2.ar歸檔方式 庫的方式

3.編譯好的程序運行的時候不依賴庫。庫作為程序的一部分編譯連接。

 4.文件集合(歸檔)

5.庫命名規則 注意了: lib庫名.a.主版本號.副版本號.批號 lib庫名.a 庫使用規則 -l 庫名 -L 庫所在目錄

感謝你能夠認真閱讀完這篇文章,希望小編分享的“Linux下如何調用dll& .so庫”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

抚松县| 沂源县| 紫云| 松江区| 宝清县| 读书| 谢通门县| 长沙市| 沭阳县| 桂林市| 岱山县| 水城县| 本溪市| 咸阳市| 会昌县| 大宁县| 象山县| 和平区| 虹口区| 启东市| 连江县| 昆山市| 青州市| 鸡西市| 中西区| 水城县| 云龙县| 德庆县| 陆河县| 建昌县| 嵩明县| 肥西县| 疏勒县| 荔浦县| 耿马| 延津县| 瑞安市| 楚雄市| 舟山市| 四川省| 叶城县|