Win7 下用 VS2015 编译 openssl-1.0.2m


声明:本文转载自https://my.oschina.net/zhangboxyz/blog/1581567,转载目的在于传递更多信息,仅供学习交流之用。如有侵权行为,请联系我,我会及时删除。

准备工作

1)下载安装编译必须的ActivePerl:  

http://www.activestate.com/activeperl/downloads

安装完成后需要执行 ppm install dmake 安装 nmake

2)下载最新的openssl源码:

https://www.openssl.org/source/

本文下载的是 openssl-1.0.2m 版本,然后解压至 C 盘根目录

设置VC编译环境

以下所有操作都是在【VS2015开发人员命令提示】中进行的,

具体位置一般是【开始->所有程序->Visual Studio 2015-> Visual Studio Tools】下;

【编译 32 位 openssl 】

cd C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin vcvars32.bat

【编译 64 位 openssl 】

cd C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\amd64 vcvars64.bat

配置编译文件和类型

如果只是想编译 OpenSSL,请看下面:

1)先进入 openssl-1.0.2m 目录

cd C:\openssl-1.0.2m

2)配置输出目录和编译类型【编译32位、64位;release、debug有区别】

perl Configure [编译类型] no-asm --prefix="[输出目录]"

-- [编译类型]可以选择以下:

参数

含义

debug-VC-WIN32

编译32位debug版本

debug-VC-WIN64A

编译64位debug版本

VC-WIN32

编译32位release版本

VC-WIN64A

编译64位release版本

-- [输出目录]理论任何地方都可以

3)配置模式:

- 【编译32位openssl】,一般都使用 no-asm 模式:

ms\do_nasm

- 如果之前编译使用了no-asm参数,否则会在编译引用了该openssl库的工程中出现”error LNK2001和error LNK2019 无法解析的外部符号”这个错误。

- 【编译64位openssl】

ms\do_win64a.bat

- 执行这一步之后,在ms目录下会生成 nt.mak 和 ntdll.mak 两个编译配置文件

- nt.mak 用于生成静态lib库

- ntdll.mak 用于生成动态dll库

注意:
如果不是想单独拿编译好的库出来用,而是需要交叉编译,比如接着编译libcurl,则可以使用如下命令全部一次性编译32位所有版本的库:
ms\32all.bat no-asm
如果想要交叉编译libcurl,还是用 libcurl\project\build-openssl.bat 更好,但不保证可以成功。

编译【静态库、动态库有区别】

- 【编译openssl静态链接库】

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

- 【编译openssl动态链接库】

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

- 执行test命令可以测试编译好的库,测试成功了就可以运行install命令,运行完之后才会在输出目录中找到输出的编译好的库和加入工程时必要的include文件。

注意事项

1)设置编译类型的时候千万别忘记 no-asm 参数,关闭汇编模式,否则会出现类似如下错误:

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)设置VC编译环境的时候,注意有32位和64位的区别。

-------------------------------------------------------------------------------------------------------------

编译实例

openssl目录:c:\openssl-1.0.2m\

编译 32 位 Release 版本的 lib 的例子:

cd C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin vcvars32.bat  perl Configure VC-WIN32 no-asm --prefix="C:\openssl-1.0.2m\win32-release-lib" ms\do_nasm nmake -f ms\nt.mak nmake -f ms\nt.mak test nmake -f ms\nt.mak install

编译 64 位 Release 版本的 dll 的例子:

cd C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin vcvars32.bat  perl Configure VC-WIN64A no-asm --prefix="c:\openssl-1.0.2m\win64-release-dll" ms\do_win64a.bat nmake -f ms\ntdll.mak nmake -f ms\ntdll.mak test nmake -f ms\ntdll.mak install nmake -f ms\ntdll.mak clean

至此,就可以将 c:\openssl-1.0.2m\win32-release-lib 目录复制到需要使用的地方就可以使用了。

本文发表于2017年11月29日 16:33
(c)注:本文转载自https://my.oschina.net/zhangboxyz/blog/1581567,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如有侵权行为,请联系我们,我们会及时删除.

阅读 1893 讨论 0 喜欢 0

抢先体验

扫码体验
趣味小程序
文字表情生成器

闪念胶囊

你要过得好哇,这样我才能恨你啊,你要是过得不好,我都不知道该恨你还是拥抱你啊。

直抵黄龙府,与诸君痛饮尔。

那时陪伴我的人啊,你们如今在何方。

不出意外的话,我们再也不会见了,祝你前程似锦。

这世界真好,吃野东西也要留出这条命来看看

快捷链接
网站地图
提交友链
Copyright © 2016 - 2021 Cion.
All Rights Reserved.
京ICP备2021004668号-1