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