前言
由于之前调研过使用GMSSL库进行sm2加解密,并适配多个系统及环境,将当时的搭建过程记录下来
GMSSL开发库编译
以下为多个操作系统编译记录,所引用的链接均为2023年6月记录的,可能已经失效
windows
windows端环境搭建主要参照https://blog.youkuaiyun.com/zyhse/article/details/112325129 这篇博客,但是由于gmssl版本更新,且我用的vs版本为2022,因此编译部分主要参照gmssl的github主页:https://github.com/guanzhi/GmSSL,流程如下:
- 安装vs2022
我已经有了就不写怎么安装了
- 安装ActivePerl
现在官网下载需要安装他们的工具,可能由于是外网的问题,一直没法下载,于是我找了一篇博文,从他的百度网盘里面下载的:https://blog.youkuaiyun.com/weixin_46767998/article/details/107830121
我下载的版本是5.26,下载后安装时安装类型选择“Typical”,之后一直下一步就行,安装完成后,cmd中执行perl -v
查看是否安装成功
C:\Users\wanghan>perl -v
This is perl 5, version 26, subversion 3 (v5.26.3) built for MSWin32-x64-multi-thread
(with 2 registered patches, see perl -V for more detail)
Copyright 1987-2018, Larry Wall
Binary build 0000 [15feb953] provided by ActiveState http://www.ActiveState.com
Built Apr 10 2020 18:45:08
Perl may be copied only under the terms of either the Artistic License or the
GNU General Public License, which may be found in the Perl 5 source kit.
Complete documentation for Perl, including FAQ lists, should be found on
this system using "man perl" or "perldoc perl". If you have access to the
Internet, point your browser at http://www.perl.org/, the Perl Home Page.
- 安装NASM
下载链接:https://www.nasm.us/pub/nasm/releasebuilds/2.15.05/win64/
**管理员身份运行,**安装后把安装目录添加到系统环境变量中
- 下载GmSSL源码
github链接:https://github.com/guanzhi/GmSSL
管理员选项打开VS命令行(这里要使用32位的,实际测试使用64位编译出来的gmssl在调用时有些问题):
切换到gmssl路径后,依次执行如下命令:
mkdir build
cd build
cmake .. -G "NMake Makefiles"
nmake
nmake install
执行nmake
后报错:
D:\code\client_state_secret_login\GmSSL-master>"C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Visual Studio 2022\Visual Studio Tools\VC\x64 Native Tools Command Prompt for VS 2022.ln
k"
**********************************************************************
** Visual Studio 2022 Developer Command Prompt v17.2.6
** Copyright (c) 2022 Microsoft Corporation
**********************************************************************
[vcvarsall.bat] Environment initialized for: 'x86'
C:\Program Files\Microsoft Visual Studio\2022\Professional>cd /d D:\code\client_state_secret_login\GmSSL-master
D:\code\client_state_secret_login\GmSSL-master>mkdir build
D:\code\client_state_secret_login\GmSSL-master>cd build
D:\code\client_state_secret_login\GmSSL-master\build>cmake .. -G "NMake Makefiles"
-- The C compiler identification is MSVC 19.32.31332.0
-- The CXX compiler identification is MSVC 19.32.31332.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: C:/Program Files/Microsoft Visual Studio/2022/Professional/VC/Tools/MSVC/14.32.31326/bin/Hostx64/x64/cl.exe - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: C:/Program Files/Microsoft Visual Studio/2022/Professional/VC/Tools/MSVC/14.32.31326/bin/Hostx64/x64/cl.exe - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS
-- Configuring done
-- Generating done
-- Build files have been written to: D:/code/client_state_secret_login/GmSSL-master/build
D:\code\client_state_secret_login\GmSSL-master\build>
D:\code\client_state_secret_login\GmSSL-master\build>nmake
Microsoft (R) 程序维护实用工具 14.32.31332.0 版
版权所有 (C) Microsoft Corporation。 保留所有权利。
[ 0%] Building C object CMakeFiles/gmssl.dir/src/version.c.obj
version.c
?⒁? 包含文件: D:\code\client_state_secret_login\GmSSL-master\include\gmssl/version.h
[ 0%] Building C object CMakeFiles/gmssl.dir/src/debug.c.obj
debug.c
?⒁? 包含文件: C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt\stdio.h
?⒁? 包含文件: C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt\corecrt.h
?⒁? 包含文件: C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.32.31326\include\vcruntime.h
?⒁? 包含文件: C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.32.31326\include\concurrencysal.h
?⒁? 包含文件: C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.32.31326\include\vadefs.h
?⒁? 包含文件: C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt\corecrt_wstdio.h
?⒁? 包含文件: C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt\corecrt_stdio_config.h
?⒁? 包含文件: C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt\string.h
?⒁? 包含文件: C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt\corecrt_memory.h
?⒁? 包含文件: C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt\errno.h
?⒁? 包含文件: C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.32.31326\include\vcruntime_string.h
?⒁? 包含文件: C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt\corecrt_wstring.h
?⒁? 包含文件: C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt\stdlib.h
?⒁? 包含文件: C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt\corecrt_malloc.h
?⒁? 包含文件: C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt\corecrt_search.h
?⒁? 包含文件: C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt\stddef.h
?⒁? 包含文件: C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt\corecrt_wstdlib.h
?⒁? 包含文件: C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.32.31326\include\limits.h
?⒁? 包含文件: C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.32.31326\include\stdint.h
?⒁? 包含文件: D:\code\client_state_secret_login\GmSSL-master\include\gmssl/error.h
[ 1%] Building C object CMakeFiles/gmssl.dir/src/sm4_common.c.obj
... 省略 ...
[ 15%] Building C object CMakeFiles/gmssl.dir/src/asn1.c.obj
asn1.c
D:\code\client_state_secret_login\GmSSL-master\src\asn1.c(1): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
?⒁? 包含文件: C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt\stdio.h
?⒁? 包含文件: C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt\corecrt.h
?⒁? 包含文件: C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.32.31326\include\vcruntime.h
?⒁? 包含文件: C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.32.31326\include\sal.h
?⒁? 包含文件: C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.32.31326\include\concurrencysal.h
?⒁? 包含文件: C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.32.31326\include\vadefs.h
?⒁? 包含文件: C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt\corecrt_wstdio.h
?⒁? 包含文件: C:\Program Files (x86)\Windows Kits