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

Ubuntu 20.04.6编译net-snmp-5.7.3时make报错求解决

解决Ubuntu 20.04.6编译net-snmp-5.7.3时的OpenSSL兼容性错误

问题原因

net-snmp 5.7.3是较旧的版本,而Ubuntu 20.04.6默认使用的OpenSSL 1.1.1对EVP_MD_CTX相关API做了不兼容改动:

  • EVP_MD_CTX变为不透明结构体,无法直接通过malloc分配内存
  • EVP_MD_CTX_cleanup函数已被废弃,替代为EVP_MD_CTX_free

sudo执行无效是因为这是代码兼容性问题,不是权限问题。

解决方法

方法1:手动修改代码适配OpenSSL 1.1.1

编辑net-snmp解压目录下的agent/mibgroup/agentx/keytools.c文件:

  1. 确保文件开头包含OpenSSL头文件:
    #include <openssl/evp.h>
    
  2. 替换第155行的内存分配代码:
    原代码:
    ctx = malloc(sizeof(*ctx));
    
    修改为:
    ctx = EVP_MD_CTX_new();
    
  3. 替换第265行的清理代码:
    原代码:
    EVP_MD_CTX_cleanup(ctx);
    
    修改为:
    EVP_MD_CTX_free(ctx);
    
  4. 同时检查文件中是否有free(ctx);语句,如果有也需要替换为EVP_MD_CTX_free(ctx);
  5. 保存文件后重新执行make

方法2:使用适配系统的net-snmp版本

  • 直接安装Ubuntu官方仓库中的预编译包(推荐):
    sudo apt update && sudo apt install snmpd libsnmp-dev
    
  • 若坚持源码编译,更换为net-snmp 5.8及以上版本,这些版本已原生适配OpenSSL 1.1.1

方法3:重新配置编译选项

重新运行configure时明确指定OpenSSL支持,确保链接正确的库:

./configure --with-openssl
make

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 15:27:39