在编译通过以后,但是在执行的时候需要动态库,动态库找不到的话,会出现下面的错误。
error while loading shared libraries: libev.so.4: cannot open shared object file: No such file or directory。
首先判断你的可执行程序需要哪些动态库,然后查看哪些动态库是这个程序找不到的!libev这个库编译好以后会自动添加到/usr/local/lib目录下,这个目录下有静态库和动态库
$ ls -l /usr/local/lib/libev*
-rw-r--r--. 1 root root 435770 Feb 22 15:20 /usr/local/lib/libev.a
-rwxr-xr-x. 1 root root 926 Feb 22 15:20 /usr/local/lib/libev.la
lrwxrwxrwx. 1 root root 14 Feb 22 15:20 /usr/local/lib/libev.so -> libev.so.4.0.0
lrwxrwxrwx. 1 root root 14 Feb 22 15:20 /usr/local/lib/libev.so.4 -> libev.so.4.0.0
-rwxr-xr-x. 1 root root 174059 Feb 22 15:20 /usr/local/lib/libev.so.4.0.0
然后查看自己的程序是需要哪些是动态库:
$ ldd /usr/local/bin/weighttp
linux-vdso.so.1 => (0x00007fff251ff000)
libev.so.4 => not found
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f8f1cc1e000)
libc.so.6 => /lib64/libc.so.6 (0x00007f8f1c88b000)
/lib64/ld-linux-x86-64.so.2 (0x00007f8f1ce49000)
解决的办法可以有几种,再次编译源代码,在安装的时候制定路径
$ ./configure –prefix=/usr
或者做一个软连接
$ sudo ln -s /usr/local/lib/libev.so.4 /usr/lib/libev.so.4
$ sudo ldconfig
或者直接拷贝相应的文件到相应的位置
$ sudo cp /usr/local/lib/libev.* /usr/lib
$ sudo ldconfig
或者设置动态库路径:
export LD_LIBRARY_PATH="/usr/local/lib"
还有一种办法就是:
$ cat /etc/ld.so.conf
include ld.so.conf.d/*.conf
/usr/local/lib
or it might look completely different, with the exception of the last line. Run ldconfig to tell it to update the cache:
$ sudo ldconfig
任何一种办法应该就可以解决遇到的问题