编译参数: './configure' '--prefix=/usr/local/php-5.3.16' '--with-libdir=lib64' '--with-config-file-path=/usr/local/php-5.3.16/etc' '--with-mysql' '--enable-fpm' '--with-openssl' '--with-zlib' '--with-curl' '--enable-mbstring' '--with-iconv-dir=/usr/local'
iconv 是之前安装过的 libiconv, 在 /usr/local/bin 目录.
一开始, 是在生成 php-fpm 时, 报一堆的 php-5.3.16/ext/iconv/iconv.c:337:
undefined reference to `libiconv'
然后Google 搜到一篇文章, 错误完全一样: undefined reference to `libiconv_open’ PHP 5.3.8 解决方法
改成 make ZEND_EXTRA_LIBS='-liconv' 编译.
于是生成 php-fpm OK 了, 但是! 后面生成的 php-5.3.16/sapi/cli/php 又有问题:
Generating phar.php
php-5.3.16/sapi/cli/php: error while loading shared libraries: .2: cannot open shared object file: No such file or directory
编译 php 没错, 运行时找不到 so.
于是尝试静态编译, 参考 http://www.linuxquestions.org/questions/linux-newbie-8/statically-compile-php-not-possible-then-860677/ 修改Makefile, 把 -export-dynamic 替换成 -all-static , 还是不行.
然后继续观察 php cli 的编译参数, 发现两个 "-L/usr/lib6464 -R /usr/lib6464" , 看来是 configure 脚本有问题, 64位系统中, 构造的 lib 路径错了.
手动加参数:
make ZEND_EXTRA_LIBS='-liconv -L/usr/local/lib'
成功...
















