错误前提:安装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.youkuaiyun.com/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.youkuaiyun.com/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。
- LD_LIBRARY_PATH=dir:$LD_LIBRARY_PATH
- export LD_LIBRARY_PATH
(参考https://www.cnblogs.com/yangxunwu1992/p/6294350.html 参考http://james23dier.iteye.com/blog/763274)问题解决
2. 重新编译,问题解决