如何编译PHP使其独立于系统库?

时间:2010-12-14 15:10:16

标签: php configuration compiler-construction shared-libraries

我需要一个独立的独立系统库版本的PHP才能将其作为包含二进制文件的.zip文件进行分发。以前.zip包含libxml2.so.2,libpng12.so.0,php.ini和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

然后我从/ usr / lib /从out / bin和libmysqlclient.so.16中获取了php。但新的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 个答案:

答案 0 :(得分:2)

首先,指令是--with-libdir而不是--libdir。其次,我认为它与/usr相关,因此将.放在那里意味着您需要将共享库放入/usr

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

您可以设置当前(shell)会话的库路径:

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

答案 1 :(得分:0)

也许你可以使用XAMPP并在某个时候保存自己?它预先包装,非常便携。

http://www.apachefriends.org/en/xampp.html