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

问题描述 投票:0回答:2

我需要一个独立于系统库的 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

然后我从 out/bin 中取出 php,从 /usr/lib/ 中取出 libmysqlclient.so.16。但是新的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=.”选项工作吗?

php configuration compilation shared-libraries
2个回答
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

0
投票

也许您可以使用 XAMPP 来拯救自己?它是预先包装好的并且非常便携。

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

© www.soinside.com 2019 - 2024. All rights reserved.