windows环境下VS2013编译openSSL

Posted foo__hack

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了windows环境下VS2013编译openSSL相关的知识,希望对你有一定的参考价值。

 

openssl版本:1.0.2h

编译器:MSVC (VS2013)

 

需要准备工具:perl。

windows环境的perl下载请戳这里:http://www.activestate.com/activeperl

 

 

打开VS2013的x86 Native command prompt(编译的是32位版本),并切换到ssl的解压根路径:

perl Configure VC-WIN32 --prefix=C:\Build-OpenSSL-VC-32           #release版本用VC-WIN32 debug版本用debug-VC-WIN32

ms\do_ms.bat
nmake -f ms\nt.mak
nmake -f ms\nt.mak install

 

运行之上命令,结果出错:

ssembling: tmp32\sha1-586.asm

tmp32\sha1-586.asm(1432) : error A2070:invalid instruction operands

tmp32\sha1-586.asm(1576) : error A2070:invalid instruction operands

 

然后原因追查到这里:https://github.com/openssl/openssl/issues/169

 

看了之后才明白,原因是原来do_ms.bat  编译汇编是用的MASM编译器,MASM编译sha1-586.asm文件的时候出错了。issue上面有人说说不要用masm编译,换成NASM编译,

然后我再从NASM的官网下载了NASM,配上环境变量,运行以下命令:

 

perl Configure VC-WIN32 --prefix=C:\Build-OpenSSL-VC-32           #release版本用VC-WIN32 debug版本用debug-VC-WIN32

ms\do_nasm.bat
nmake -f ms\nt.mak
nmake -f ms\nt.mak install

 

然后就能编译成功了。

 

references: 

http://developer.covenanteyes.com/building-openssl-for-visual-studio/

https://github.com/openssl/openssl/issues/169

http://stackoverflow.com/questions/12850607/initializing-big-numbers-with-constants-in-masm

 

以上是关于windows环境下VS2013编译openSSL的主要内容,如果未能解决你的问题,请参考以下文章

Windows7下UEFI开发EDK2环境搭建(VS2013+UDK2015+IASL+patch+Openssl)

Windows7下UEFI开发EDK2环境搭建(VS2013+UDK2015+IASL+patch+Openssl)

如何在 Windows 下编译 OpenSSL

如何在Windows下编译OpenSSL

如何在 Windows 下编译 OpenSSL

windows 平台使用 VS2017 编译openssl源码