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

使用OpenSSL编译Squid时make报错(调用废弃函数)如何解决?

问题根因确认

你的推测完全正确,报错是-Werror=deprecated-declarations参数触发的:该参数会将编译器检测到的「调用废弃API」警告直接转为错误终止编译,这是Squid默认开启的严格编译规则,OpenSSL 3.0版本废弃了包括RSA_free在内的大量旧版本加密API,和低版本Squid的调用逻辑冲突就会触发该报错。

参数所在位置

-Werror=deprecated-declarations一般来源于两个位置:

  • Squid源码的compilerfeatures.m4宏定义文件,是编译前configure脚本执行时用于生成Makefile的内置规则
  • 执行完configure后生成的根目录Makefile、src/Makefile文件中,作为编译参数直接定义

解决方法

  • 方法1(最推荐,无需修改配置文件):执行configure阶段直接注入忽略规则,命令如下:
    ./configure --with-openssl [你原本使用的其他编译参数] CFLAGS="-Wno-error=deprecated-declarations" CXXFLAGS="-Wno-error=deprecated-declarations"
    
    配置完成后正常执行make && make install即可完成编译。
  • 方法2:手动修改Makefile删除规则
    执行完默认configure后,打开生成的所有Makefile文件,搜索-Werror=deprecated-declarations字段直接删除,之后再执行make编译即可。
  • 方法3:升级Squid到5.7及以上稳定版本,高版本已经完成OpenSSL 3.0 API适配,默认不会触发该类报错,无需额外修改编译参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 06:15:09