1. 程式人生 > >/usr/bin/ld: cannot find -lxxx 的解決辦法 新增動態連結庫的搜尋路徑

/usr/bin/ld: cannot find -lxxx 的解決辦法 新增動態連結庫的搜尋路徑

/usr/bin/ld: cannot find -lxxx 的解決辦法

在軟體編譯過程中,經常會碰到類似這樣的編譯錯誤:

/usr/bin/ld: cannot find -lhdf5

這表示找不到庫檔案 libhdf5.so,若是其它庫檔案,則是 cannot find -lxxx 了,其中 xxx 是庫檔案的名字。

解決方法有:

1. 安裝此庫檔案和相關軟體

一般庫檔案屬於某個軟體,google搜尋該軟體並安裝,或者使用 yum 安裝。

2. 將庫檔案所在路徑新增到gcc的搜尋路徑

使用以下命令查詢gcc能否搜尋到指定的庫檔案:

$ gcc -lhdf5 --verbose

查詢庫檔案 libhdf5.so 是否能在搜尋路徑中找到。

若安裝了軟體,找到了庫檔案的路徑。但是依然會提示上述錯誤。則表示gcc的搜尋路徑不包含該庫檔案所在的路徑。將庫檔案所在的路徑加入到搜尋路徑中的方法為:

2.1 使用 /etc/ld.so.conf 配置檔案

將庫檔案所在的路徑加入到 /etc/ld.so.conf 尾部,並使之生效:

$ sudo echo '/opt/biosoft/hdf5-1.8.15-patch1/lib/' >> /etc/ld.so.conf
libhdf5.so 在路徑 /opt/biosoft/hdf5-1.8.15-patch1/lib/ 下,將該路徑加新增到配置檔案中
$ sudo ldconfig
執行該命令,重新載入 /ext/ld.so.conf 中的路徑,使修改生效。

2.2 修改環境變數

$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/biosoft/hdf5-1.8.15-patch1/lib/
修改環境變數 LD_LIBRARY_PATH,加入庫檔案所在路徑。使用 export 命令使修改生效。

$ echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/biosoft/hdf5-1.8.15-patch1/lib/' >> ~/.bashrc
$ source ~/.bashrc
將上述 export 命令加入到配置檔案 ~/.bashrc,使之永久生效。

$ export LIBRARY_PATH=/opt/biosoft/hdf5-1.8.15-patch1/lib/:$LIBRARY_PATH
若修改變數 LD_LIBRARY_PATH 不奏效,則修改變數 LIBRARY_PATH 。(重點...)

原文:https://www.cnblogs.com/zhming26/p/6164131.html