GmSSL Build with VS2017
使用背景:
最近研究GB35114, 有关于sip协议部分,exosip的已经编译过,由于gb3511中采用的是国密算法,因此这里记录一下GMSSL在windows下的编译过程以及遇到的错误
详细GMSSL的介绍见:http://gmssl.org/
根据文档说明,步骤如下:
在Window下的编译和安装
安装ActivePerl和Visual Studio,以管理员身份打开Visual Studio Tools下的Developer Command Prompt控制台并运行:
perl Configure VC-WIN32
nmake
nmake install
环境准备:
1. ActivePerl: ActivePerl-5.28.1.0000-MSWin32-x64-432e1938.exe
2. NASM: nasm-2.14.03rc2-installer-x64.exe
32位编译:
第一步便遇到了问题: Can't locate Win32/Console.pm in @INC (you may need to install the Win32::Console module)
解决: 自然想到是perl缺少Win32:Console module
网上搜索Win32:Console module perl module,其中看到perl的安装, cpan方式
perl -MCPAN -e shell
install Win32:Console
对照操作后,重新再来,发现dmake错误,又无法识别,继续搜索dmake...
继续各种查找,各种尝试,最终能真正work的方法是使用如下链接的site替换perl安装下的site目录。。。。。。
https://download.csdn.net/download/u011234288/10346624
解决此问题后
nmake
nmake install
就一路畅通
注意,管理员权限安装
64位编译:
由于文档上面介绍默认是32位的编译安装,64位可能会有问题,尝试一下,如果有问题再提交作者,
config看看64位的
perl Configure VC-WIN64A /
VC-WIN64I
貌似都有相同的错误,无法编译通过。。。。。。
IF EXIST libcrypto-1_1-x64.dll.manifest DEL /F /Q libcrypto-1_1-x64.dll.manifest
link /nologo /debug /dll /implib:libcrypto.lib /out:libcrypto-1_1-x64.dll /def:libcrypto-1_1-x64.def @C:\Users\leehm\AppData\Local\Temp\nm7B43.tmp || (DEL /Q libcrypto.* libcrypto-1_1-x64.* && EXIT 1)
crypto\aes\aes_cfb.obj : fatal error LNK1112: module machine type 'x86' conflicts with target machine type 'x64'
NMAKE : fatal error U1077: 'link' : return code '0x1'
Stop.
解决:
切换使用vs2017所带的command tool, 之前编译32位使用的是:Developer Command Prompt for vs2017,
看看错误貌似是x86与x64冲突, 切换到2017的x64 tool, x64 Native Tools Command Prompt for vs2017,
重新 拉一份干净的代码,
perl Configure VC-WIN64A
namke,
nmake install
OK,至此32/64都已编译成功。
更多关于GmSSL的issue:
https://github.com/guanzhi/GmSSL/issues
最新文章
- C#调用C++编写的DLL函数, 以及各种类型的参数传递 (转载)
- 用php创建mysql数据库
- Codeforces 715A. Plus and Square Root[数学构造]
- [Java Web] 6、Tomcat服务器的安装及配置以及JSP技术笔记
- Nginx Http框架的理解
- mini-treeselect 不允许选父节点的写法
- java&;c# dec 加密,通用
- haproxy 常用acl规则与会话保持
- 【leetcode】354. Russian Doll Envelopes
- bzoj3796
- dig命令 安装
- ios不同版本下的UILabel自动换行问题
- 初学VUE2.0
- oracle 查询优化改写
- 通过java api统计hive库下的所有表的文件个数、文件大小
- 【图文详解】Hadoop集群搭建(CentOs6.3)
- Java中的变量与常量
- nginx.conf(centos7 1.14)主配置文件修改
- vue学习(2)
- win10默认壁纸位置
热门文章
- 16.合并两个排序的链表(python)
- break continue exit return 的区别
- SpringBoot与jackson.databind兼容报错问题
- python – 如何禁用Django的CSRF验证?
- SpringBoot项目中,表单的验证操作
- vscode 代码缩进2格
- jsp页面实现上传文件,并且还得支持断点续传的功能
- CodeChef DGCD Dynamic GCD
- python正则之模式re.I re.M
- 关于servlet-api.jar和jsp-api.jar的选择和使用