求助linux大神!非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"

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-11-09
修改你自己用户的环境变量文件
~/.bash_profile 申明你安装好的lib库进去
source ~/.bash_profile 这样加载环境变量
另外PHP程序依赖的库应该可以从该程序的配置文件路径中申明就可以了,不一定需要系统默认路径
configure --- 参数的时候会指定你的配置文件路径,你的依赖库路径等等
不知道你安装的是什么软件,可以搜一下安装教程,比对一下配置参数
注:满足了你的需求的话请采纳答案,答题不容易啊 :)追问

--with-jpeg-dir比方说这个参数该怎么填?我把jpeg这个库安装在/home/admin/usr/local/jpeg中

第2个回答  2013-11-09
真的不建议你这样做!就算你做出来了,安全也是一个问题!因为你的这些文件, 别人都有权限!你想想,你的是普通文件,任何人都可能有权限,到时候你安装了php环境,别人可以轻而易举的给你破坏了。追问

这是我们内网自个的服务器,不存在安全问题

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网