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

编译OpenSSL aesgcm.c示例代码报错,如何解决?

解决AES-GCM示例代码编译报错的问题

看起来你踩了个常见的库链接误区——你用-lmcrypt链接的是mcrypt加密库,但你从OpenSSL仓库拿的aesgcm.c完全依赖的是OpenSSL的EVP加密接口,这俩库根本不兼容,这就是报错的核心原因。下面是具体的解决步骤:

1. 替换为正确的编译命令

直接把-lmcrypt换成OpenSSL的加密库链接参数就行,正确的编译命令是:

cc aesgcm.c -o aesgcm -lcrypto

这里-lcrypto是链接OpenSSL核心加密库(包含我们需要的EVP_GCM相关接口),-o aesgcm是指定生成的可执行文件名,方便后续运行测试。

2. 处理OpenSSL开发包缺失的情况

如果执行上面的命令后还是报错,比如提示找不到-lcrypto或者头文件openssl/evp.h不存在,那大概率是你的系统没装OpenSSL的开发包:

  • 如果你用Debian/Ubuntu类系统,执行以下命令安装:
    sudo apt-get install libssl-dev
    
  • 如果你用RHEL/CentOS类系统,执行:
    sudo yum install openssl-devel
    
  • 要是你是手动编译安装的OpenSSL,还需要指定头文件和库的路径:
    cc aesgcm.c -o aesgcm -I/你的OpenSSL安装路径/include -L/你的OpenSSL安装路径/lib -lcrypto
    
    把路径替换成你实际安装OpenSSL的位置就行。

3. 验证代码与OpenSSL版本兼容性

另外,确保你下载的aesgcm.c代码和你系统的OpenSSL版本匹配。比如一些较老的OpenSSL版本在EVP_GCM的接口细节上可能有差异,但最新的官方示例代码通常适配主流的OpenSSL版本(1.1.1及以上)。如果遇到函数未定义的报错,可以对照你系统OpenSSL的man手册检查接口是否一致。

内容的提问来源于stack exchange,提问作者Darsana Malyakkal Premanand

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 07:55:06