红联Linux门户
Linux帮助

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

发布时间:2016-03-11 22:13:54来源:linux网站作者:rznice

最近在安装完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


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

sudo find / -name libjemalloc.so.2


得到如下结果:

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

上面的那个是系统本身安装的,下面的这个是我自己安装的。


既然有这个文件,我们就把他加入到/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


看看/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


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

/usr/jemalloc/lib/

保存退出。


执行如下命令让文件生效:

sudo /sbin/ldconfig

再次启动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)


参考:http://www.linuxdiyf.com/linux/18841.html


本文永久更新地址:http://www.linuxdiyf.com/linux/18842.html