首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Linux 下 GCC 編譯成功但運行提示找不到共享庫的解決

     編輯:程式設計疑難解答

錯誤現象

./hehe.c: error while loading shared libraries: libjpeg.so.9: cannot open shared object file: No such file or directory

編譯命令 gcc -o hehe.c hehe.c -ljpeg 成功,但執行時找不到動態庫。

原因分析

編譯鏈接階段只需庫文件存在於 /usr/local/lib,但運行時動態鏈接器需在運行時搜索路徑中找到 .so 文件。默認搜索路徑不包含 /usr/local/lib。

解決方案

  1. 編譯時指定 rpath(推薦):
    gcc -o hehe hehe.c -L/usr/local/lib -ljpeg -Wl,-rpath=/usr/local/lib
  2. 臨時設置環境變量:
    export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
  3. 永久配置:編輯 /etc/ld.so.conf.d/usr-local-lib.conf 添加路徑,執行 ldconfig

驗證方法

ldd ./hehe  # 查看動態庫依賴路徑
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved