【error】非root用户解决/usr/bin/ld: cannot find -lxx缺失库函数安装

本文详细介绍了在安装Caffe过程中遇到的依赖项错误及其解决步骤,包括定位缺失的库文件、使用yum命令下载安装对应版本的库、配置动态链接库共享路径等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

错误前提:安装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。

  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. 重新编译,问题解决

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值