1. 程式人生 > >/usr/bin/ld: cannot find -lxxx 的解決辦法

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

建立 html 解決方法 gcc bash 存在 cannot 重建 ext

在軟件編譯過程中,經常會碰到類似這樣的編譯錯誤:
/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

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

通常在軟件編譯時出現的usr/bin/ld: cannot find -lxxx的錯誤,主要的原因是庫文件並沒有導入的ld檢索目錄中。

解決方式:

1。確認庫文件是否存在,比如-l123, 在/usr/lib, /usr/local/lib,或者其他自定義的lib下有無lib123.so, 如果只是存在lib123.so.1,

那麽可以通過ln -sv lib123.so.1 lib123.so,建立一個連接重建lib123.so.

2。檢查/etc/ld.so.conf中的庫文件路徑是否正確,如果庫文件不是使用系統路徑,/usr/lib, /usr/local/lib, 那麽必須在文件中加入。

3。ldconfig 重建ld.so.cache文件,ld的庫文件檢索目錄存放文件。尤其剛剛編譯安裝的軟件,必須運行ldconfig,才能將新安裝的

庫文件導入ld.so.cache.

4。測試,gcc -l123 --verbose.

這裏的123為對應的庫名稱,123只是個例子不是mode

http://jiangwenfeng762.iteye.com/blog/1740325

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