日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

连接动态链接库时找不到链接库的解决办法

發布時間:2023/12/20 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 连接动态链接库时找不到链接库的解决办法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

連接動態鏈接庫時找不到鏈接庫的解決辦法

鏈接動態庫時,可能會出現無法找到鏈接庫的錯誤,如果用ldd命令就能查看到可執行文件的所有依賴的庫。在《linux c一站式編程》一書中看到了一些解決辦法,先總結如下四中辦法:

方法一

如果只是在開發中臨時使用一下,可以使用 LD_LIBRARY_PATH 這個變量進行設置

EXPORT LD_LIBRARY_PATH=當前所依賴的庫的路徑

這種辦法只是臨時有效,如果重新啟用一個終端,就需要重新設置一次。

方法二

連接動態鏈接庫是由動態鏈接器決定的,那么首先需要知道動態鏈接器是如何查找庫的。

  • 首先在環境變量 LD_LIBRARY_PATH 所記錄的路徑中查找,如果沒有找到,就進行下一步
  • 從緩存文件 /etc/ld.so.cache 中查找,在root權限下,使用ldconfig命令,讀取 /etc/ld.so.conf 文件并生成該緩存文件
  • 如果以上兩種辦法都沒有找到動態庫,那么動態鏈接器會在系統默認路徑中查找,先在 /usr/lib/ 中查找,然后再 /lib 中查找

那么,根據以上動態鏈接器查找庫的方法,將庫的路徑寫入 /etc/ld.so.conf 文件中,然后運行ldconfig(ldconfig -v可以查看詳細信息),就能生成緩存文件,連接器就能找到庫文件

方法三

直接將庫文件復制一份到/usr/lib 或者 /lib 目錄中,讓動態鏈接器在系統默認路徑中查找

方法四

在使用gcc編譯時,添加選項 -Wl,-rpath,動態庫的路徑, 表示-rpath 動態庫路徑 是由gcc傳遞給鏈接器的選項。

gcc main.c -g -L. -lstack -Istack -o main -Wl,-rpath,$PWD

gcc 編譯 main.c ,鏈接動態庫libstack.so,頭文件在 ./stack目錄中,制定的庫文件路徑在當前路徑中

總結

以上是生活随笔為你收集整理的连接动态链接库时找不到链接库的解决办法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。