参考链接
- 编译与安装
- 【GmSSL】GmSSL 与 OpenSSL 共存的安装方法_阿卡基YUAN的博客-CSDN博客_openssl和gmssl
- 在Linux下安装GmSSL_百里杨的博客-CSDN博客_安装gmssl
ubuntu18操作
- 需要超级管理员权限
- 本人将下载的安装包master.zip和安装的位置都设定在/usr/local下
- 创建文件夹/usr/local/gmssl,用于后期安装gmssl
# 下载 gmssl
wget https://github.com/guanzhi/GmSSL/archive/master.zip
# 解压
unzip master.zip
- 配置安装路径,编译为静态库
- cd GmSSL-master/ 进入解压后的文件夹
- 注:–prefix表示安装路径;no-shared 表示只编译静态库;默认生成64位库。
- ./config --prefix=/usr/local/gmssl --openssldir=/usr/local/gmssl no-shared
- 编译
- sudo make
- 安装
- sudo make install
- 添加环境变量
# 添加环境变量
echo 'export PATH="$PATH:/usr/local/gmssl/bin"' >> ~/.bash_profile
source ~/.bash_profile
- 查看版本信息(openssl 与 gmssl共存)
ubuntu20操作
- ubuntu18按照上述操作是没有问题的,但是在ubuntu20上还需要进一步修改
- 参考链接 Ubuntu20上编译Gmssl库并使用Java调用其提供的Java Wapper API接口_EEEEEEcho的博客-CSDN博客_gmssl java
- 在执行./config之前需要执行 需要修改两个文件才能编译通过
- 修改Configure文件 sudo gedit Configure
- 这个在前15行找
- 原文 use if $^O ne "VMS", 'File::Glob' => qw/glob/;
- 修改后 use if $^O ne "VMS", 'File::Glob' => qw/:glob/;
- 即 在 qw/和glob/之间插入冒号
- 修改 test/build.info 文件 sudo gedit ./test/build.info
- 这个在后15行找
- 原文 use if $^O ne "VMS", 'File::Glob' => qw/glob/;
- 修改后 use if $^O ne "VMS", 'File::Glob' => qw/:glob/;
- 即 在 qw/和glob/之间插入冒号
完整流程
- 解压文件
- 进入解压后的文件
- 修改文件 Configure 和 ./test/build.info
- 设置参数,生成make文件的目标文件
- ./config --prefix=/usr/local/gmssl --openssldir=/usr/local/gmssl no-shared
- 注:–prefix表示安装路径;no-shared 表示只编译静态库;默认生成64位库
- 编译
- sudo make
- make test ubuntu18不会出现问题,但是ubuntu20会显示 2个Error,这个对于后面的make install进行安装没有任何影响
- 安装
- sudo make install
- 添加环境变量
- 也可以将其添加到为~/.bashrc
- 技术|什么是 .bashrc,为什么要编辑 .bashrc?
# 添加环境变量
echo 'export PATH="$PATH:/usr/local/gmssl/bin"' >> ~/.bash_profile
source ~/.bash_profile
- 查看版本信息(openssl 与 gmssl共存)
补充说明
cd GmSSL-master# --prefix 指定 gmssl 的安装路径
# --openssldir 表示 OpenSSL 数据区域,例如openssl.cnf,证书和密钥. 如果是相对目录,它将被添加到--prefix给定的目录中。【可以不指定,默认在 --prefix 同级目录的 ssl 目录】
# no-shared 表示只编译静态库,不编译动态库
#
# 官方解释
#
# --prefix prefix for the OpenSSL installation, which includes the
# directories bin, lib, include, share/man, share/doc/openssl
# This becomes the value of INSTALLTOP in Makefile
# (Default: /usr/local)
# --openssldir OpenSSL data area, such as openssl.cnf, certificates and keys.
# If it's a relative directory, it will be added on the directory
# given with --prefix.
# This becomes the value of OPENSSLDIR in Makefile and in C.
# (Default: PREFIX/ssl)
# [no-]shared [don't] try to create shared libraries when supported.