Linux下找不到so文件的解决办法

最近在安装完tengine,在启动tengine时报找不到libjemalloc.so.2的提示,即:

[root@localhost tengine]# sbin/nginx 
sbin/nginx: error while loading shared libraries: libjemalloc.so.2: 
cannot open shared object file: No such file or directory
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3

首先找找系统中有没有这个文件:

sudo find / -name libjemalloc.so.2
  • 1
  • 1

得到如下结果

[root@localhost tengine]# sudo find / -name libjemalloc.so.2
/usr/local/lib/libjemalloc.so.2
/usr/jemalloc/lib/libjemalloc.so.2
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3

上面的那个是系统本身安装的,下面的这个是我自己安装的。
既然有这个文件,我们就把他加入到/etc/ld.so.conf中,打开这个文件发现里面内容如下:

将.so文件路径的目录添加到/etc/ld.so.conf

[root@localhost ld.so.conf.d]# cat /etc/ld.so.conf
include ld.so.conf.d/*.conf
  • 1
  • 2
  • 1
  • 2

看看/etc/ld.so.conf.d目录下的文件:

[root@localhost ld.so.conf.d]# ls /etc/ld.so.conf.d
kernel-3.10.0-327.4.4.el7.x86_64.conf
dyninst-x86_64.conf                     
libiscsi-x86_64.conf
kernel-3.10.0-229.20.1.el7.x86_64.conf  
mariadb-x86_64.conf
kernel-3.10.0-229.el7.x86_64.conf       
kernel-3.10.0-327.10.1.el7.x86_64.conf  
vmware-tools-libraries.conf
kernel-3.10.0-327.3.1.el7.x86_64.conf
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

于是在该目录下创建一个other.conf文件。内容如下:

/usr/jemalloc/lib/
  • 1
  • 1

保存退出。
执行如下命令让文件生效:

sudo /sbin/ldconfig
  • 1
  • 1

再次启动tengine,应用正常启动。

可以用如下命令查看某个可执行文件所依赖的文件:

[root@localhost ld.so.conf.d]# ldd /usr/local/tengine/sbin/nginx
    linux-vdso.so.1 =>  (0x00007ffc9fd66000)
    libpthread.so.0 => /lib64/libpthread.so.0 (0x00007ff1c5f56000)
    libdl.so.2 => /lib64/libdl.so.2 (0x00007ff1c5d52000)
    libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00007ff1c5b1a000)
    libjemalloc.so.2 => /usr/jemalloc/lib/libjemalloc.so.2 (0x00007ff1c58cb000)
    libc.so.6 => /lib64/libc.so.6 (0x00007ff1c550a000)
    /lib64/ld-linux-x86-64.so.2 (0x00007ff1c6187000)
    libfreebl3.so => /lib64/libfreebl3.so (0x00007ff1c5306000)

猜你喜欢

转载自blog.csdn.net/dyzhen/article/details/60320546