1. 程式人生 > >【error】非root使用者解決/usr/bin/ld: cannot find -lxx缺失庫函式安裝

【error】非root使用者解決/usr/bin/ld: cannot find -lxx缺失庫函式安裝

錯誤前提:安裝caffe, make時報錯,是依賴項的問題。

一.  出現/usr/bin/ld: cannot find -lxxx錯誤的三種原因

1 系統沒有安裝相對應的lib
2 相對應的lib版本不對
3 lib(.so檔)的symbolic link 不正確,沒有連結到正確的函式庫檔案(.so)

(參考http://blog.sina.com.cn/s/blog_4156950c0100sfzz.html)

二,判斷自己是哪種【my錯誤原因是有link但是沒有對應的lib】

檢視link可使用ll usr/lib64,如下。若箭頭右側顯示高亮,則說明沒有此檔案

libopencv_video.so -> libopencv_video.so.2.4
libopencv_video.so.2.4 -> libopencv_video.so.2.4.5
-rwxr-xr-x. 1 zsun users  345864 Feb  4 09:13 libopencv_video.so.2.4.5

三, 由於缺少lib,下面進行下載安裝

想要安裝 libopencv_video.so.2.4.5

使用命令:yum whatprovides libopencv_video.so.2.4.5 

例如 yum provides libstdc++.so.6 得到 libstdc++-4.4.7-4.el6.i686

root使用者: yum installlibstdc++-4.4.7-4.el6.i686下載(參考http://blog.csdn.net/qianlong4526888/article/details/40108591)

普通使用者: yumdownloader libstdc++-4.4.7-4.el6.i686               下載為lib

----------或使用yumdownloader libstdc++-4.4.7-4.el6.x86_64   下載為lib64【注意區別,lib與lib64不能混,會報錯】

由此得到rpm包,使用命令解壓rpm2cpiolibstdc++-4.4.7-4.el6.x86_64.rpm |cpio -idvm

在生成的usr/lib64資料夾會得到需要的庫檔案,複製到使用者目錄的usr/lib64,命令ll,可發現link左右不再變紅,即成功。

(參考http://blog.csdn.net/tifficial/article/details/78196941)

很多人到這裡問題就解決了,我仍出現瞭如下問題

四,error內容如下

libIex.so.6...required by libopencv_highgui.so.2.4.9(not found)

../../lib/libopencv_highgui.so.2.4.9: undefined reference to `png_set_longjmp_fn'

convert_imageset.cpp:(.text.startup+0x1212): undefined reference to `gflags::ShowUsageWithFlagsRestrict(char const*, char const*)'
../lib/gcc/x86_64-unknown-linux-gnu/4.8.5/../../../../lib/libgflags.so: undefined reference to `std::__throw_out_of_range_fmt(char const*, ...)@GLIBCXX_3.4.20'

make: *** [.build_release/tools/convert_imageset.bin] Error 1

1 . 解決libIex.so.6....required by libopencv_highgui.so.2.4.9(not found)

查詢根目錄(公共目錄)是否有此連結庫libIex.so.6?若有,貼上到自己目錄下。

若沒有,使用上述方法查詢並下載yum provide---yumdownloader---rpm2icpo---cp ./usr/* ~/usr/最後貼上到自己目錄下。

此時仍是有此錯誤。

檢視$ ldd .build_release/lib/libcaffe.so
libcurand.so.8.0 => /usr/local/cuda/lib64/libcurand.so.8.0 (0x00007ff1ed496000)
libglog.so.0 => not found...

發現自己目錄下有這些庫檔案,但是庫依賴時【動態連結庫共享路徑】不是根據自己目錄進行搜尋。

`root使用者:更改/etc/ld.so.conf 或 在conf.d/下新增檔案。

`非root使用者更改方法:$vim ~/.bash_profile 新增兩行後 source。

  1. LD_LIBRARY_PATH=dir:$LD_LIBRARY_PATH  
  2. export LD_LIBRARY_PATH

(參考https://www.cnblogs.com/yangxunwu1992/p/6294350.html 參考http://james23dier.iteye.com/blog/763274)問題解決

2. 重新編譯,問題解決

相關推薦

errorroot使用者解決/usr/bin/ld: cannot find -lxx缺失函式安裝

錯誤前提:安裝caffe, make時報錯,是依賴項的問題。 一.  出現/usr/bin/ld: cannot find -lxxx錯誤的三種原因 1 系統沒有安裝相對應的lib2 相對應的lib版本不對3 lib(.so檔)的symbolic link 不正確,沒有連

解決usr/bin/ld: cannot find -lxxx的錯誤

轉載自 參考 通常在軟體編譯時出現的usr/bin/ld: cannot find -lxxx的錯誤或者…so undefine xxxx,主要的原因是庫檔案並沒有匯入的ld檢索目錄中。  解決方式: 1. 確認庫檔案是否存在,比如-l123, 在/usr/lib, /usr/local

解決找不到/usr/bin/ld: cannot find -lXX的問題

Ubuntu下遇到ld: cannot find -lXX之類的問題,提示找不到相關庫檔案 1、 如果能上網,最不用廢腦子的辦法: $ sudo apt-get install apt-file $ apt-file update $ apt-file search li

解決/usr/bin/ld: cannot find -lmysqlclient錯誤

類似/usr/bin/ld: cannot find -xxxx的錯誤有很多, 首先我們可以最簡單的判斷一下: 這類情況一般是由於缺乏某某庫檔案, 又或者可能是由於已存在的庫問題版本不對造成的 一般都是解決的辦法就是安裝缺乏的devel包就可以解決, 當然還有其他的未知因素, 我們看一個例項: 我在一臺裝c

解決/usr/bin/ld: cannot find XXX

解決: /usr/bin/ld: cannot find -levent collect2: ld returned 1 exit status make: *** [lfcserver] Error 1 檢視本地 locate libevent cd /usr/lib/

解決/usr/bin/ld: cannot find -lc

現象:執行gcc靜態編譯程式時報錯:/usr/bin/ld: cannot find -lccollect2: ld returned 1 exit statusmake: *** [gcc_dry2] Error 1(或者呼叫Makefile編譯時報錯)原因:程式連結需要靜

安裝 sysbench的 報錯 /usr/bin/ld: cannot find -lmysqlclient_r 解決辦法

cli 既然 cannot ibm 這樣的 mysq 文件名 can 都是 首先你需要找到這個庫的位置 一般找的話需要將lib 給加上(註意:我這裏是 -lmysqlclient_r 的報錯,於是我找就找 libmysqlclient_r ) find / -name

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

建立 html 解決方法 gcc bash 存在 cannot 重建 ext 在軟件編譯過程中,經常會碰到類似這樣的編譯錯誤: /usr/bin/ld: cannot find -lhdf5 這表示找不到庫文件 libhdf5.so,若是其它庫文件,則是 cannot

編譯時遇到/usr/bin/ld: cannot find -lluajit 解決方法

今天編譯一個c++和torch程式的時候爆出了/usr/bin/ld: cannot find -lluajit的錯誤,幾經折騰,終於吧這個問題解決了, 出現這個問題的原因就是luajit沒有安裝到正確的位置. 1.下載luajit http://luajit.org/download.

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

/usr/bin/ld: cannot find -lxxx 的解決辦法 在軟體編譯過程中,經常會碰到類似這樣的編譯錯誤: /usr/bin/ld: cannot find -lhdf5 這表示找不到庫檔案 libhdf5.so,若是其它庫檔案,則是 cannot find -lxxx 了

/usr/bin/ld: cannot find -lc 解決

[linux_day01]#cc -static hello.c /usr/bin/ld: cannot find -lccollect2: ld 返回 1主要原因是,在安裝Linux時,如果不選擇開發環境,會預設安裝需要的動態庫,但不會安裝靜態庫。如果我們在靜態連線程式時,會找不到libc.a這個基礎靜態庫

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

1. gcc沒有加-static引數 使用find /usr/ -name "libc.so",如果沒有內容搜出來,那麼就是qlibc沒有裝,需要安裝一個。在CentOS-6.2-x86_64-bin-DVD1.iso裡面有qlibc的安裝包。網上很多配yum repo的教

“/usr/bin/ld: cannot find -lopenblas” error in Caffe compilation

AR -o .build_release/lib/libcaffe.a LD -o .build_release/lib/libcaffe.so /usr/bin/ld: cannot find -l

CentOS安裝Qt編譯錯誤以及無法除錯的問題解決( /usr/bin/ld:cannot find –lGL 和 Debugginghas failed)

CentOS安裝Qt編譯錯誤以及無法除錯的問題解決 1、前提 系統: CentOS-6.5-x86_64-minimal.iso 最小化linux. 手動安裝x-winodws介面。 Qt版本:qt-opensource-linux-x64-5.6.0.run。 安裝qt需

Linux環境下gcc靜態編譯/usr/bin/ld: cannot find -lc錯誤原因及解決方法 原因:

原因: 一般出現這個問題的時候,Makefile中肯定有-static選項。這其實是靜態連結時沒有找到libc.a。 解決方案: 需要安裝glibc-static.xxx.rpm,如glibc-static-2.12-1.107.el6_4.2.i686.rpm,或是yum install gli

/usr/bin/ld: cannot find -lcrypto 錯誤的解決方法

Linux下 build code 時,要做 -lssl, -lcrypto 的連結,出現類似下面的錯誤: /usr/bin/ld: cannot find -lcrypto /usr/bin/ld: cannot find -lssl 原因是沒有找到 libss

精闢!!/usr/bin/ld: cannot find -l* 問題的解決方法

如果編譯時,有類似如下的錯誤提示: /usr/bin/ld: cannot find -lpci 則可以安裝相應的庫,來解決這個問題: sudo apt-get install libpci-dev 其實就是缺少*就安裝*  /u

opencv error : /usr/bin/ld: cannot find -lippicv

Wrongly associated library path!find /usr/local/ -name "libippicv*"Add the path returned to the LIBS

usr/bin/ld: cannot find 錯誤解決方法

   參考:http://blog.siyebocai.cn/20100324_5p424qs7.html    通常在軟體編譯時出現的usr/bin/ld: cannot find -lxxx的錯誤,主要的原因是庫檔案並沒有匯入的ld檢索目錄中。    解決方式:

編譯時遇到 /usr/bin/ld: cannot find -lxxx 錯誤的解決方法

本文介紹下,在編譯軟體時,提示usr/bin/ld: cannot find錯誤的解決方法,有需要的朋友參考下。 原因:庫檔案並沒有匯入的ld檢索目錄中。 解決方法:    1、確認庫檔案是否存在,比如-l123, 在/usr/lib, /usr/local/lib,