编译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,还需要指定头文件和库的路径:
把路径替换成你实际安装OpenSSL的位置就行。cc aesgcm.c -o aesgcm -I/你的OpenSSL安装路径/include -L/你的OpenSSL安装路径/lib -lcrypto
3. 验证代码与OpenSSL版本兼容性
另外,确保你下载的aesgcm.c代码和你系统的OpenSSL版本匹配。比如一些较老的OpenSSL版本在EVP_GCM的接口细节上可能有差异,但最新的官方示例代码通常适配主流的OpenSSL版本(1.1.1及以上)。如果遇到函数未定义的报错,可以对照你系统OpenSSL的man手册检查接口是否一致。
内容的提问来源于stack exchange,提问作者Darsana Malyakkal Premanand
相关产品推荐
相关产品推荐

