You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

编译httpd-2.4.57搭配OpenSSL3.0.7时遇废弃函数及链接错误

编译httpd-2.4.57搭配OpenSSL 3.0.7的错误解决方法

问题根源

httpd-2.4.57的ab(Apache Bench)工具代码未适配OpenSSL 3.0的API变更,导致编译时出现废弃API警告,以及链接阶段的未定义引用错误。

解决方法

方法1:禁用ab工具编译(快速解决)

如果不需要使用ab压力测试工具,可在configure阶段添加参数跳过它的编译:

./configure --with-ssl=/usr/local/ssl --disable-ab [其他你需要的configure参数]

之后重新执行make && make install即可完成编译。

方法2:升级httpd到兼容版本

httpd 2.4.58及后续版本已修复与OpenSSL 3.0的兼容性问题,直接下载对应版本重新编译即可避免该错误。

方法3:手动修改ab.c代码适配OpenSSL 3.0 API

进入httpd源码的support目录,编辑ab.c文件,修改以下内容:

  1. 替换废弃的EC_KEY相关函数:

    • 将EVP_PKEY_get1_EC_KEY(key)替换为EVP_PKEY_get_EC_KEY(key)
    • 将EC_KEY_get0_group(ec)替换为EC_KEY_get_group(ec)
    • EC_KEY_free(ec)可保留,若要彻底消除警告,需调整为OpenSSL 3.0新密钥管理API,但改动较大,建议保留原函数
  2. 替换未定义引用的函数:

    • 将EVP_PKEY_get_bits(pkey)替换为EVP_PKEY_bits(pkey)
    • 将EVP_PKEY_get_id(pkey)替换为EVP_PKEY_id(pkey)

修改完成后,重新执行make && make install。

方法4:确保configure正确识别OpenSSL路径

若为链接参数问题,重新执行configure时明确指定OpenSSL的安装路径:

./configure --with-ssl=/usr/local/ssl [其他你需要的configure参数]

确保OpenSSL的库和头文件路径被正确识别后,再重新编译。

内容的提问来源于stack exchange,提问作者Sheshan Gamage

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 08:07:54