1

我需要一个独立的独立于系统库的PHP版本,才能将其作为包含二进制文件的.zip文件进行分发。以前,.zip包含libxml2.so.2,libpng12.so.0,php.ini和php可执行文件。 最近我需要添加一些功能并重新编译PHP。如何编译PHP以使其独立于系统库?

./configure \ 
    --prefix=/home/user/php/out \ 
    --libdir=. \ 
    --enable-static=YES \ 
    --enable-shared=NO \ 
    --with-pdo_mysql \ 
    --with-gd \ 
    --with-mysql \ 
    --enable-zip \ 
    --enable-zend-multibyte \ 
    --enable-cgi \ 
    --enable-fastcgi \ 
    --with-ldap=shared 
make && make install 

然后,我把PHP从出/ bin和libmysqlclient.so.16从/ usr/lib中/:我做到了。但新的PHP不想拿起图书馆。一旦我运行它,我得到以下错误:

./php: error while loading shared libraries: libmysqlclient.so.16: cannot open shared object file: No such file or directory 

libmysqlclient.so.16和php是在同一目录中。如果我把libmysqlclient.so.16放到/ usr/lib中,php工作正常。

编译过程中是否还有其他选项我已经遗忘?为什么不是“--libdir =”。选项工作?

回答

2

首先,指令是--with-libdir而不是--libdir。其次,我认为它相对于/usr,因此将.表示您需要将共享库放入/usr

如果您使用共享库完成了任何C编码,您必须知道约ld。处理共享库路径的最简单方法是使用ld

您可以设置库路径的电流(壳)会议:

bash-4.1$ export LD_LIBRARY_PATH=/path/to/your/libs 

您还可以配置ld做这一切的时候:

bash-4.1$ echo /path/to/your/libs >> /etc/ld.so.conf 
bash-4.1$ ldconfig 
+0

这是刚够用'LD_LIBRARY_PATH = \'PWD \'/ php'开始PHP - 谢谢您的回答。 – ssobczak 2010-12-16 10:18:52