源碼編譯 PHP 5.5/5.6 時,make 階段報錯 make: *** [sapi/cli/php] Error 1,多因 configure 未正確檢測 libiconv 導致鏈接階段缺少 -liconv。本文提供 Makefile 手動修補法,快速繞過編譯阻斷。
/bin/sh /root/php-5.5.19/libtool --silent --preserve-dup-deps --mode=link cc \
-export-dynamic -O2 -fpic ... -o sapi/cli/php \
sapi/cli/php_cli.o sapi/cli/php_http_parser.o sapi/cli/php_getopt.o sapi/cli/php_cli_server.o \
libs/libphp5.bundle -lcrypt -lz ... -lxml2 -lz -lm -lcrypt
/usr/bin/ld: cannot find -liconv
collect2: error: ld returned 1 exit status
make: *** [sapi/cli/php] Error 1
關鍵行: /usr/bin/ld: cannot find -liconv —— 鏈接器找不到 iconv 庫。
vi Makefile
/EXTRA_LIBS
# 或直接搜尋關鍵字
-liconv:
# 修改前
EXTRA_LIBS = -lcrypt -lz -lcrypt -lrt -lmysqlclient ... -lcrypt
# 修改後 (行尾加空格 -liconv)
EXTRA_LIBS = -lcrypt -lz -lcrypt -lrt -lmysqlclient ... -lcrypt -liconv
:wq
make -j$(nproc) # 多核並行加速
# CentOS/RHEL
yum install -y libiconv-devel
# Debian/Ubuntu
apt-get install -y libiconv-hook-dev
# 重新 configure (需 make clean)
make clean
./configure --with-iconv=/usr/local/libiconv ... # 指定前綴
make
優先推薦方案二,從源頭解決依賴缺失;Makefile 修補屬應急手段,升級版本需重複操作。
sapi/cli/php -v
# PHP 5.5.19 (cli) (built: ...)
# Copyright (c) 1997-2014 The PHP Group
# Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies
補齊 -liconv 即可通過鏈接階段,編譯出完整 CLI SAPI 二進制,後續 make install 部署無阻。