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

如何编译PHP使其独立于系统库?,php,configuration,compiler-construction,shared-libraries,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

我需要一个独立于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)会话设置库路径:

您还可以将
ld
配置为始终执行此操作:

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

也许你可以用XAMPP来拯救你自己?它是预先包装好的,非常便于携带


LD\u LIBRARY\u PATH=`pwd`./PHP启动PHP就足够了-谢谢你的回答。
bash-4.1$ echo /path/to/your/libs >> /etc/ld.so.conf
bash-4.1$ ldconfig