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

来源:互联网 发布:淘宝网运动鞋男款 编辑:程序博客网 时间:2024/05/16 04:31

最近在安装完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.confinclude 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.dkernel-3.10.0-327.4.4.el7.x86_64.confdyninst-x86_64.conf                     libiscsi-x86_64.confkernel-3.10.0-229.20.1.el7.x86_64.conf  mariadb-x86_64.confkernel-3.10.0-229.el7.x86_64.conf       kernel-3.10.0-327.10.1.el7.x86_64.conf  vmware-tools-libraries.confkernel-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)
0 0
原创粉丝点击