使用背景:

最近研究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

最新文章

  1. C#调用C++编写的DLL函数, 以及各种类型的参数传递 (转载)
  2. 用php创建mysql数据库
  3. Codeforces 715A. Plus and Square Root[数学构造]
  4. [Java Web] 6、Tomcat服务器的安装及配置以及JSP技术笔记
  5. Nginx Http框架的理解
  6. mini-treeselect 不允许选父节点的写法
  7. java&c# dec 加密,通用
  8. haproxy 常用acl规则与会话保持
  9. 【leetcode】354. Russian Doll Envelopes
  10. bzoj3796
  11. dig命令 安装
  12. ios不同版本下的UILabel自动换行问题
  13. 初学VUE2.0
  14. oracle 查询优化改写
  15. 通过java api统计hive库下的所有表的文件个数、文件大小
  16. 【图文详解】Hadoop集群搭建(CentOs6.3)
  17. Java中的变量与常量
  18. nginx.conf(centos7 1.14)主配置文件修改
  19. vue学习(2)
  20. win10默认壁纸位置

热门文章

  1. 16.合并两个排序的链表(python)
  2. break continue exit return 的区别
  3. SpringBoot与jackson.databind兼容报错问题
  4. python – 如何禁用Django的CSRF验证?
  5. SpringBoot项目中,表单的验证操作
  6. vscode 代码缩进2格
  7. jsp页面实现上传文件,并且还得支持断点续传的功能
  8. CodeChef DGCD Dynamic GCD
  9. python正则之模式re.I re.M
  10. 关于servlet-api.jar和jsp-api.jar的选择和使用