编译PHP 8.1.13遇bz2模块错误:需libbz2 >=1.0.0
解决PHP编译时BZip2依赖检测失败的问题
问题描述
我尝试编译PHP 8.1.13,使用的configure命令包含:
./configure <其他选项> --with-bz2=/path_to_bzip2/bzip2/1.0.6
但编译到BZip2环节时出现错误:
checking for BZip2 support... yes
checking for BZ2_bzerror in -lbz2... no
configure: error: bz2 module requires libbz2 >= 1.0.0./configure for php version 8.1.13 in php-8.1.13 did not succeed
已将bzip2路径导出到LD_LIBRARY_PATH,且bzip2的lib目录文件如下:
user@server [bzip2/1.0.6/lib]:ls libbz2.a libbz2.so.1.0 libbz2.so.1.0.6
尝试过手动安装bzip2-devel但问题未解决,之前可用的旧版PHP编译脚本现在也出现相同错误。
解决方案
创建libbz2.so软链接:configure检测时会优先查找无版本号的
libbz2.so文件,当前目录只有带版本号的so文件,执行以下命令创建软链接:ln -s /path_to_bzip2/bzip2/1.0.6/lib/libbz2.so.1.0.6 /path_to_bzip2/bzip2/1.0.6/lib/libbz2.so配置PKG_CONFIG_PATH:让configure正确识别bzip2的配置,先设置环境变量:
export PKG_CONFIG_PATH=/path_to_bzip2/bzip2/1.0.6/lib/pkgconfig:$PKG_CONFIG_PATH如果目标路径下没有
pkgconfig目录,手动创建并生成bzip2.pc配置文件:mkdir -p /path_to_bzip2/bzip2/1.0.6/lib/pkgconfig cat > /path_to_bzip2/bzip2/1.0.6/lib/pkgconfig/bzip2.pc << EOF prefix=/path_to_bzip2/bzip2/1.0.6 exec_prefix=\${prefix} libdir=\${exec_prefix}/lib includedir=\${prefix}/include Name: bzip2 Description: A block-sorting file compressor library Version: 1.0.6 Libs: -L\${libdir} -lbz2 Cflags: -I\${includedir} EOF添加编译/链接参数:在configure命令中直接指定bzip2的头文件和库路径,强制编译器使用指定版本:
./configure <其他选项> --with-bz2=/path_to_bzip2/bzip2/1.0.6 \ CPPFLAGS="-I/path_to_bzip2/bzip2/1.0.6/include" \ LDFLAGS="-L/path_to_bzip2/bzip2/1.0.6/lib"验证环境变量:确保
LD_LIBRARY_PATH在执行configure时已正确生效,可提前验证:echo $LD_LIBRARY_PATH # 确认输出包含/path_to_bzip2/bzip2/1.0.6/lib
内容的提问来源于stack exchange,提问作者Lokesh Purohit
相关产品推荐
相关产品推荐

