精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Linux應用程序找不到動態庫怎么辦?

汽車電子技術 ? 來源:嵌入式情報局 ? 作者:情報小哥 ? 2023-02-21 11:02 ? 次閱讀

1、靜態庫與動態庫

所謂的庫,其實都是一些二進制的可執行文件集合,靜態庫在linux中一般命名形式為libxxx.a,而動態庫一般常用libxxx.so。

他們都可以通過源文件編譯得到,往期對這兩種庫都過介紹:

Linux應用編程之靜態庫的制作與使用

Linux應用編程之動態庫的制作與使用

Linux應用編程之動靜態鏈接庫輔助技巧(ldd,-static

對于靜態庫主要是用于程序編譯的過程中提供相應的函數實現,最終使用到該靜態庫中的內容會整合到最終的程序中,這樣程序在運行過程中就不再依賴外部其他庫了。

而動態庫并不是用于編譯期,而是在運行期通過動態加載器來加載庫函數,使得可執行程序得以運行,當然動態鏈接也分不同的加載時期,相對比較靈活,有些程序一運行就需要進行加載,而有些的動態庫是在執行過程中加載。

2、動靜態庫優缺點

那么動態庫與靜態庫的優缺點也比較明顯,使用靜態庫編譯生成的可執行文件對外界沒有什么需求,依賴少,相應的其可執行程序體積變大,一旦修改需要重新編譯。

而對于動態庫,由于是程序運行時候加載相應的動態庫,所以其可執行文件相對要小很多,同時對于庫的修改,僅僅編譯和替換相應的動態庫即可,更加的方便。

3、Linux中動態庫的查找

由于可執行程序依賴動態鏈接庫,所以存在一個問題:從哪里找動態鏈接庫?,經常我們動態編譯的可執行應用程序,由于系統中、或者自己沒有指定相應的庫路徑,就會報運行失敗,提示缺少相應的庫。

圖片

這樣就需要在系統中安裝對應的庫,并且把庫放在動態加載器所能搜索到的位置,在linux中有如下幾種搜索路徑:

1、在可執行程序編譯的時候通過編譯選項指定相應的動態庫路徑,這樣在程序運行的時候就會在文件系統對應路徑加載對應的動態庫,比如通過使用-Wl,-rpath=your path來進行編譯,編譯成功的可執行程序你可以使用ldd命令來查看是否路徑指定成功,可執行程序幾乎是第一時間搜索該路徑查看動態庫是否存在。

2、通過使用環境變量 : LD_LIBRARY_PATH指定,可以使用如下命令進行查看:

1echo $LD_LIBRARY_PATH

通過export在已有的路徑上進行添加:

1export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:your path

跟之前給大家介紹的PATH環境變量的使用是一致的,當可執行程序找到指定路徑,會在該環境變量中指定的路徑進行查找,當然修改該環境變量會影響到所有的應用程序動態加載的搜索。

3、系統默認的路徑/lib和/user/lib進行搜索,當然在用戶級的程序大部分都會安裝在/usr/local中,所以用戶級的庫大部分也會放在/user/local/lib路徑中。

4、當然在Ubuntu中還通常在配置文件/etc/ld.so.conf中指定的動態庫搜索路徑,不過要記得當我們把相應的動態庫路徑添加進入以后,需要使用ldconfig進行配置才能生效。

最 后

好了,這里小哥就簡單介紹了動態庫與靜態庫的差異,以及Linux系統一般如何搜索動態庫,本系列文章后續還會更新,記得關注學習哦。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Linux
    +關注

    關注

    87

    文章

    11123

    瀏覽量

    207919
  • 函數
    +關注

    關注

    3

    文章

    4237

    瀏覽量

    61969
  • 靜態庫
    +關注

    關注

    0

    文章

    21

    瀏覽量

    7407
收藏 人收藏

    評論

    相關推薦

    proteus元件找不到怎么辦

    `誰有元件啊我這里好多元件都找不到不知道該怎么辦`
    發表于 05-20 21:13

    pcb板找不到元件怎么辦,求大神呀

    pcb板找不到元件怎么辦,求大神呀
    發表于 06-30 23:00

    Altium Designer找不到元件怎么辦

    請問一下各位,我在Altium Designer里面繪制電路圖時找不到marvell公司的88e1111芯片的元件,不知道該怎么辦?網上到處都是比較全的元件,下下來也沒見怎么個全法,所以請教一下各位有沒有關于Marvell 公
    發表于 07-19 11:34

    找不到TDA2822怎么辦

    怎么用MUltisim做有關TDA2822仿真,找不到這個原件怎么辦?用其他的怎么替代
    發表于 07-22 15:41

    在***原件找不到所需器件怎么辦,新手啊

    在***原件找不到所需器件怎么辦
    發表于 10-23 17:46

    AD10工程管理窗口和窗口找不到怎么辦

    AD10工程管理窗口和窗口找不到怎么辦怎樣是AD10恢復默認設
    發表于 01-16 10:41

    orcad仿真中找不到TDA2030怎么辦?沒有那個

    orcad中找不到TDA2030怎么辦?沒有那個
    發表于 02-22 20:16

    matlab找不到的問題

    大神們,你們好: 我初學電力電子simulink仿真,找不到connectors這個怎么辦,我要T節點。 還有就是,有沒有一個供電力電子仿真的專門的下載,像AD里的
    發表于 03-31 18:39

    求助,ChipWatcher找不到信號怎么辦

    ChipWatcher找不到信號怎么辦
    發表于 08-11 10:01

    電腦找不到硬盤怎么辦

    有時候開機時電腦找不到硬盤怎么辦,本內容分析了幾種找不到硬盤的解決方案。
    發表于 05-08 11:16 ?6.3w次閱讀

    linux找不到動態如何解決

    解決linux找不到動態的問題
    發表于 06-13 09:43 ?2048次閱讀

    找不到服務器或DNS錯誤時該怎么辦

    陽光系統下載 找不到服務器或DNS錯誤怎么辦 我們在使用電腦的時候,經常會瀏覽網頁,但是在瀏覽網頁的過程中經常出現無法顯示此網頁、找不到服務器或DNS錯誤,那么我們遇到網頁提示找不到
    發表于 02-03 15:07 ?3976次閱讀
    <b class='flag-5'>找不到</b>服務器或DNS錯誤時該<b class='flag-5'>怎么辦</b>

    keil5中找不到或沒有對應的芯片怎么辦?超詳細!!

    keil5中找不到或沒有對應的芯片怎么辦?超詳細!!安裝完Keil5之后,有的小伙伴們是不是會發現,為什么新建工程的時候找不到自己想要的CUP型號,如下圖:這里就假設要找的CUP型號是三星
    發表于 12-23 19:16 ?29次下載
    keil5中<b class='flag-5'>找不到</b>或沒有對應的芯片<b class='flag-5'>怎么辦</b>?超詳細!!

    虛擬機里找不到adb設備怎么辦

    虛擬機里找不到adb設備
    的頭像 發表于 10-13 18:45 ?1866次閱讀

    multisim找不到元件怎么辦

    問題以及如何解決它。 Multisim 找不到元件的原因 在使用 Multisim 時,可能會遇到找不到元件的情況。這可能是由于以下原因導致的: 1.1 軟件版本問題:不同版本的 Multisim 中可能包含不同的元件。如果您
    的頭像 發表于 02-23 15:44 ?6124次閱讀