Windows环境下编译openssl库

openssl版本:openssl-1.0.2e

在Windows环境下编译openssl需要perl支持,安装ActivePerl

1. 配置编译环境

我们用VS2010来作为编译工具,打开命令行,切换到bin目录,比如

cd C:\Program Files\Microsoft Visual Studio 10.0\VC\bin
vcvars32.bat

2. 配置编译文件和模式

切换到openssl编译目录,输入:

perl Configure debug-VC-WIN32 no-asm --prefix="E:\openssl-1.0.2e\build-debug"

debug-VC-WIN32表示Windows 32位系统,64位系统请换成debug-VC-WIN64A
Release版本去掉debug, 改为VC-WIN32或者VC-WIN64A
no-asm 表示不用汇编,不设置此属性,会导致编译不过

3. 生成编译配置文件

32位

ms\do_ms.bat

64位

ms\do_win64a.bat

执行这一步之后,在ms目录下会生成nt.makntdll.mak两个编译配置文件
nt.mak 用于生成静态lib库
ntdll.mak 用于生成动态dll库

4. 编译

静态库

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

动态库

nmake -f ms\ntdll.mak
nmake -f ms\ntdll.mak install

编译完成之后就可以在build-debug目录看到编译生成的库了

5. 遇到的错误

Assembling: tmp32\sha1-586.asm
tmp32\sha1-586.asm(1427) : error A2070: invalid instruction operands
tmp32\sha1-586.asm(1571) : error A2070: invalid instruction operands
NMAKE : fatal error U1077: 'ml' : return code '0x1'
Stop.

出现该问题就是因为在第2步时没有加上no-asm属性

6. 总结和思考

上述方法在32位系统上测试OK,64位虽然原理相同但没有实际编译过。
另外,64位的编译选项还有一个VC-WIN64I,它和VC-WIN64A有什么区分还不知道?

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言 编译libcurl是一件繁琐但并不复杂的事情,因为需要多个库的配合。编译前务必提前准备好zlib库、open...
    ORCLee阅读 3,112评论 0 0
  • 近期的项目中用到了文件的上传和下载功能,于是就发现了 libcurl 网络传输库。要使用该库,当然首先就需要进行编...
    LiarMaiq阅读 3,230评论 0 1
  • 最近因需要尝试编译了一次Vbox,官方论坛上只有32位环境的编译教程,所以这次在64位、特别是中文环境上遇到不少坑...
    MushiUta阅读 5,749评论 0 6
  • 2019-07-08 又一次更新这次是为了升级到可以支持TLS1.3,所以又要编译OpenSSL,再次记录一下。 ...
    李书文阅读 1,350评论 0 1
  • 值得后悔的事很多,但向前看是我们的人生。 二十岁,一个蠢蠢欲动的年纪,我们等到了自己一直期望着的自由,好多事情可以...
    无缺不人生阅读 459评论 0 0