前言
昨天在anaconda的虚拟环境py3 下装uwsgi
但执行uwsgi命令的时候报错提示:
uwsgi: error while loading shared libraries: libpcre.so.1: cannot open…
找不到libpcre.so.1 这个动态链接库。
这个东西叫做 动态链接库。
- An .so file is a compiled library file. It stands for “Shared Object” and is analogous to a Windows DLL
正文
首先我学习了几个linux命令:
- ldd命令用于打印程序或者库文件所依赖的共享库列表。
2.ldconfig命令的用途主要是在默认搜寻目录/lib和/usr/lib以及动态库配置文件/etc/ld.so.conf内所列的目录下,搜索出可共享的动态链接库(格式如lib.so),进而创建出动态装入程序(ld.so)所需的连接和缓存文件。
3.locate 让使用者可以很快速的搜寻档案系统内是否有指定的档案。
|
|
ldconfig的几点注意事项:
- 往/lib和/usr/lib里面加东西,是不用修改/etc/ld.so.conf的,但是完了之后要调一下ldconfig,不然这个library会找不到。
- 想往上面两个目录以外加东西的时候,一定要修改/etc/ld.so.conf,然后再调用ldconfig,不然也会找不到。
- 比如安装了一个mysql到/usr/local/mysql,mysql有一大堆library在/usr/local/mysql/lib下面,这时就需要在/etc/ld.so.conf下面加一行/usr/local/mysql/lib,保存过后ldconfig一下,新的library才能在程序运行时被找到。
- 如果想在这两个目录以外放lib,但是又不想在/etc/ld.so.conf中加东西(或者是没有权限加东西)。那也可以,就是export一个全局变量LD_LIBRARY_PATH,然后运行程序的时候就会去这个目录中找library。一般来讲这只是一种临时的解决方案,在没有权限或临时需要的时候使用
in my case:1234add the line below in /etc/profile:export LD_LIBRARY_PATH=/data/software/anaconda2/libldconfig /lib/x86_64-linux-gnu/
finished!
另外 LD_LIBRARY_PATH的优先级是最高的。
The order is documented in the manual of the dynamic linker, which is ld.so. It is:
- directories from LD_LIBRARY_PATH;
- directories from /etc/ld.so.conf;
- /lib;
- /usr/lib.
(I’m simplifying a little, see the manual for the full details.)
|
|