make: *** [sapi/cli/php] Error 1
發生於 make 階段建立 sapi/cli/php 時,通常為連結器找不到 libiconv 符號。
./configure 未正確偵測 libiconv 路徑,導致 Makefile 中 EXTRA_LIBS 缺少 -liconv 參數。
Makefile,尋找 EXTRA_LIBS 行(約第 88 行) -liconv# 修改前
EXTRA_LIBS = -lcrypt -lcrypt -lrt -lmysqlclient_r -lgd -lfreetype -lpng -lz -ljpeg -lz -lresolv -lm -ldl -lnsl -lxml2 -lz -lm -lxml2 -lz -lm -lmysqlclient_r -lz -lcrypt -lnsl -lm -lxml2 -lz -lm -lxml2 -lz -lm -lcrypt -lxml2 -lz -lm -lxml2 -lz -lm -lxml2 -lz -lm -lcrypt
# 修改後
EXTRA_LIBS = ... -lcrypt -liconv
make缺點:make clean 或重新 configure 會覆蓋修改。
make ZEND_EXTRA_LIBS='-liconv'
此參數會自動併入連結指令,不修改 Makefile,重新編譯依然有效。
./configure \
--with-iconv=/usr/local \
--with-iconv-dir=/usr/local \
LDFLAGS="-L/usr/local/lib" \
CPPFLAGS="-I/usr/local/include" \
...其他參數...
確保 libiconv 開發套件已安裝:
yum install libiconv-develapt-get install libiconv-hook-dev(或 libc6-dev 內建)brew install libiconv./configure --prefix=/usr/local && make && make installundefined symbol: libiconv_open原因:編譯通過但執行時找不到 libiconv 共享庫。
解決:
/usr/local/lib 在 /etc/ld.so.conf 或 LD_LIBRARY_PATHldconfigLDFLAGS="-static -liconv"# 檢查 iconv 支援
php -m | grep iconv
php -r "echo iconv('UTF-8', 'BIG5', '測試');"
dnf install php / apt install php / brew install phpdocker pull php:8.3-cliphp-build、phpbrew、mise