我需要一个独立于系统库的 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=.”选项工作吗?
首先,该指令是
--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
也许您可以使用 XAMPP 来拯救自己?它是预先包装好的并且非常便携。