
Debian 12 / Ubuntu 24.04 LTS 上编译安装 PHP 8.4.2 时出现错误:configure: error: iconv does not support errno,x86_64 和 ARM64 平台上均出现此错误
script 中其中 libiconv 的编译安装如下
# Download and install libiconv
wget https://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.17.tar.gz
tar zxf libiconv-1.17.tar.gz
cd libiconv-1.17
./configure --enable-static
make && make install
cd ..PHP 部分编译参数如下
./configure --prefix=/usr/local/php \
--with-config-file-path=/usr/local/php/etc \
--with-config-file-scan-dir=/usr/local/php/conf.d \
--enable-fpm \
--with-fpm-user=www \
--with-fpm-group=www \
--enable-mysqlnd \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--with-iconv=/usr/local/ \
...
...ldd 查看共享动态库若正确则如下显示
root@hetzner-fsn1-003:~/libiconv-1.17# ldd $(which iconv)
linux-vdso.so.1 (0x0000f77deaa26000)
libiconv.so.2 => /usr/local/lib/libiconv.so.2 (0x0000f77dea8b0000)
libc.so.6 => /lib/aarch64-linux-gnu/libc.so.6 (0x0000f77dea6f0000)
/lib/ld-linux-aarch64.so.1 (0x0000f77dea9e9000)若提示 not found 则如下显示
root@hetzner-fsn1-003:~/libiconv-1.17# ldd $(which iconv)
linux-vdso.so.1 (0x0000f86724c72000)
libiconv.so.2 => not found
libc.so.6 => /lib/aarch64-linux-gnu/libc.so.6 (0x0000f86724a50000)
/lib/ld-linux-aarch64.so.1 (0x0000f86724c35000)解决办法
export 添加临时变量
更新 LD_LIBRARY_PATH: 添加 /usr/local/lib 到 LD_LIBRARY_PATH 环境变量:
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATHln 创建软链接指向 /usr/local/lib/libiconv.so.2
可以使用符号链接将 libiconv.so.2 放置在一个系统自动搜索的目录中。例如,将它链接到 /usr/lib:
sudo ln -s /usr/local/lib/libiconv.so.2 /usr/lib/libiconv.so.2
sudo ldconfigroot@hetzner-fsn1-003:~# ls -l /usr/lib/libiconv.so.2
lrwxrwxrwx 1 root root 28 Jan 19 03:52 /usr/lib/libiconv.so.2 -> /usr/local/lib/libiconv.so.2追加 '/usr/local/lib' 到 '/etc/ld.so.conf'
将 /usr/local/lib 添加到 /etc/ld.so.conf 并执行 ldconfig:
echo "/usr/local/lib" | sudo tee -a /etc/ld.so.conf
sudo ldconfig参考资料
configure does not detect GNU libiconv correctly · Issue #12213 · php/php-src