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

在Ubuntu 22上编译Apache 2.4.25时遇到链接错误求助

在Ubuntu上编译Apache 2.4.25时遇到链接错误求助

看起来你这是Apache 2.4.25和当前使用的OpenSSL 1.1.0h兼容性不匹配导致的链接错误,这些未定义的函数引用都是因为编译器找不到对应OpenSSL版本里的实现,我给你几个实际可行的解决思路:

  • 显式指定OpenSSL路径重新配置
    有时候编译脚本没正确识别OpenSSL的安装位置,你可以在Apache的configure阶段明确指定OpenSSL的路径,同时确保APR和APR-Util的路径也正确:

    ./configure --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr --with-ssl=/usr/local/ssl
    

    这里的/usr/local/ssl要换成你实际的OpenSSL安装路径,如果是系统自带的版本,路径可能是/usr。配置完成后重新执行make clean && make试试。

  • 降级OpenSSL到兼容版本
    Apache 2.4.25是2017年的版本,而OpenSSL 1.1.0系列做了不少API变更,比如你报错里的SSLv2_client_method在这个版本里已经被默认禁用甚至逐步移除了(毕竟SSLv2是极不安全的协议)。你可以试着降级到OpenSSL 1.0.2系列(比如1.0.2u,这是该分支最后一个安全维护版本),编译安装后再重新编译Apache,兼容性会好很多。

  • 手动修改代码适配OpenSSL 1.1.0
    如果不想降级OpenSSL,也可以直接修改support/ab.c里的代码来适配:

    • 删掉CRYPTO_malloc_init()的调用,这个函数在OpenSSL 1.1.0里已经被移除,内存管理会自动初始化;
    • 把SSLv2_client_method()替换成TLS_client_method(),或者如果你确实需要SSLv2支持,得先确保编译OpenSSL时启用了SSLv2(默认是关闭的);
    • 把EVP_PKEY_bits()替换成EVP_PKEY_get_bits(),这是OpenSSL 1.1.0里的新函数名。
  • 重新编译APR-Util关联OpenSSL
    有时候APR-Util在编译时没正确链接OpenSSL,导致Apache编译时找不到相关依赖。你可以重新编译APR-Util:

    ./configure --with-apr=/usr/local/apr --with-ssl=/usr/local/ssl
    make && make install
    

    完成后再回到Apache的目录重新编译。

备注:内容来源于stack exchange,提问作者Shinomoto Asakura

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.20 09:09:30