linux下root权限ldd找不到,非root用户解决找不到库文件问题

找不到库文件,或者是没有安装,或者是安装了但没找到。没找到的原因是库文件所在文件夹不在搜索路径当中。因此,要想解决这个问题,就要安装,和设置搜索路径。作为非root用户,没有root权限也完全可以解决这两个问题。简单说,就是把库文件下载到某个用户文件夹下,然后把该文件夹路径添加到环境变量$LD_LIBRARY_PATH定义中(.bashrc)。

1. 库文件“安装”

在用户目录下建立lib文件夹,然后去网上搜索下载所缺少的库文件即可。如果搜到的是rpm包,解压命令:

rpm2cpio xxx.x86_64.rpm | cpio -div

2.库文件搜索路径

一般 Linux 系统把 /lib 和 /usr/lib

两个目录作为默认的库搜索路径。对于处于默认库搜索路径之外的库,需要将库的位置添加到库的搜索路径之中。设置库文件的搜索路径有两种方式,

root用户方式:在 /etc/ld.so.conf

文件中添加库的搜索路径,一行一个

非root用户方式:修改环境变量 $LD_LIBRARY_PATH

比如,某服务器上vi提示:error shile loading shared

libraries: libperl.so: cannot open shared object

file: No such file or directory.

$ ldd `which vim` 查看vim的库依赖,

linux-vdso.so.1 =>

(0x00007fff07b5b000)

libncurses.so.5 => /usr/lib64/libncurses.so.5

(0x000000384c000000)

libselinux.so.1 => /lib64/libselinux.so.1

(0x0000003102800000)

libacl.so.1 => /lib64/libacl.so.1

(0x0000003102000000)

libgpm.so.1 => /usr/lib64/libgpm.so.1

(0x0000003102400000)

libperl.so => not found

libresolv.so.2 => /lib64/libresolv.so.2

(0x0000003106400000)

libutil.so.1 => /lib64/libutil.so.1

(0x000000310d400000)

libc.so.6 => /lib64/libc.so.6

(0x0000003101000000)

libm.so.6 => /lib64/libm.so.6

(0x0000003101400000)

libdl.so.2 => /lib64/libdl.so.2

(0x0000003101800000)

libpthread.so.0 => /lib64/libpthread.so.0

(0x0000003101c00000)

libsepol.so.1 => /lib64/libsepol.so.1

(0x0000003102c00000)

/lib64/ld-linux-x86-64.so.2 (0x0000003100c00000)

libattr.so.1 => /lib64/libattr.so.1

(0x0000003105400000)

libnsl.so.1 => /lib64/libnsl.so.1

(0x0000003104000000)

libcrypt.so.1 => /lib64/libcrypt.so.1

(0x0000003112e00000)

可以看到是找不到libperl.so。网上找到的解决方案是先安装libperl.so。如果已安装还找不到,则

locate

libperl.so找到其位置,然后把此路径添加到/etc/ld.so.conf中。问题是我没有root权限,无法使用这个方案。解决方法:首先去下了一个perl-libs-5.8.8-41.fc8.x86_64.rpm,rpm2cpio解压后里面只有一个文件libperl.so,把它放到$HOME/lib下,然后在.bashrc中添加:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HOME/lib

source一下.bashrc,问题解决。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值