CentOS7编译bubichain-v3遇EC_GF2m系列函数未声明错误求助
解决CentOS7编译bubichain-v3时EC_GF2m相关函数未声明的问题
我碰到过好几次CentOS7上因为OpenSSL版本过低导致这类密码学函数未声明的问题,你的情况正好符合这个场景——CentOS7默认自带的OpenSSL 1.0.2并不支持EC_GF2m_simple_method和EC_GROUP_set_curve_GF2m这些函数,它们是在OpenSSL 1.1.0及以后版本才引入的API。你之前通过yum安装的openssl-devel(对应你写的libssl-dev,CentOS里包名是openssl-devel)也是1.0.2版本,所以无法解决问题。
下面是具体的解决步骤:
1. 卸载系统默认的旧版OpenSSL
先移除系统自带的OpenSSL及其开发包:
sudo yum remove -y openssl openssl-devel
2. 编译安装OpenSSL 1.1.1(LTS稳定版本)
OpenSSL 1.1.1是长期支持版本,兼容性和稳定性都很好,推荐安装这个版本:
- 下载OpenSSL 1.1.1系列的源码包(比如
openssl-1.1.1w,可从OpenSSL官方渠道获取) - 解压源码包并进入目录:
tar -zxf openssl-1.1.1w.tar.gz cd openssl-1.1.1w
- 配置编译参数(指定安装路径并开启共享库):
./config --prefix=/usr/local/openssl shared zlib
- 编译并安装:
make && sudo make install
3. 配置系统环境优先使用新安装的OpenSSL
需要让系统识别到新的OpenSSL库和命令:
# 创建命令软链接 sudo ln -sf /usr/local/openssl/bin/openssl /usr/bin/openssl # 更新系统库缓存 sudo ldconfig
验证版本是否生效:
openssl version
输出应该显示OpenSSL 1.1.1w ...之类的结果,说明安装成功。
4. 重新编译bubichain-v3项目
回到项目目录,清理之前的编译缓存后重新编译:
cd /home/bubichain-v3 mkdir -p build && cd build make clean cmake .. make -j$(nproc)
这样应该就能解决EC_GF2m_simple_method和EC_GROUP_set_curve_GF2m未声明的编译错误了。
内容的提问来源于stack exchange,提问作者JackCen
相关产品推荐
相关产品推荐

