非root用户安装软件时如何调用系统的库文件?
在没有root权限的情况下,我作为一个普通用户,源码安装php环境,configure的时候bash提示缺少zlib、freetype等等的库文件(我想是因为没有root权限,所以读不到系统中别人已经装好的这些库文件吧),这时候想法是在自己有权限的目录下自己安装所需的这些库,但是安装好后configure php源码时依旧提示找不到这些库文件,我想应该是php源码只懂得去系统默认目录找这些库文件,而不会去我安装好的目录下找这些库文件,请问各位大神该怎么去解决这个问题?另外是不是有一种方式是可以添加环境变量让编译器去读我目录下库文件的做法?
一般你增加库文件目录后,需要用ldconfig 更新库文件路径的。
首先你要修改 /etc/ld.so.conf(不同发行版本不一样,你需要自己修改对应发行版本下的文件),增加你的库文件所在的目录,然后运行sudo ldconfig更新一下库缓存即可。
基于安全因素,你必须要有root权限运行这一次即可,以后不在需要了。
理论上,zlib这些库应该已经安装了的,请检查你的php是否安装正确?
php还没通编译,情况是这样的,我把jpeglib这个库放在自己home目录下某个目录下,但是我在编译php时系统并不能识别到jpeglib这个库的存在,提示error:jpeglib.h not find,请问该怎么让编译时能识别到我这个库安装在自己目录下?--with-jpeg-dir这个选项该怎么填才有效?
原来是这样!
这不是库的问题,而是编译头文件的问题。
你看看你的编译器,一般编译器可以带指定include文件的目录,很多编译器使用 -i 选项来指定额外的头文件目录(你说的库文件)。如过你是在编译php的源代码生成php的可执行代码,那么需要make的时候,使用-I /home/admin/usr/local/jpeg,如:
make -I /home/admin/usr/local/jpeg -I xxxx目录
如果你是运行php程序的时候提示缺少库,则修改php的配置文件php.ini,把你的jpeglib目录加进去:
include_path变量即可:
; UNIX:
"/path1:/path2"
include_path =
".:/usr/share/php"
;
; Windows:
"\path1;\path2"
include_path =
".;c:\php\includes"