原文地址:https://blog.csdn.net/YAOJINGKAO/article/details/53041165?locationNum=10&fps=1
http://www.jianshu.com/p/4522f17ce2ff和 http://developer.covenanteyes.com/building-openssl-for-visual-studio/
编译release版本和debug版本一般只要一个能编译通过,另一个也不会存在问题的。所以以下尽量精简文章长度,最后附有编译所需的所有命令行。
1)下载安装编译必须的ActivePerl:http://www.activestate.com/activeperl/downloads 有说法说StrawbarryPerl也行,我没试过就不知道能不能成功了
2)下载最新的openssl源码:https://www.openssl.org/source/ 我这里下载的是2016年11月4日最新的openssl 1.0.2j版本。然后解压至C盘根目录,形成如下目录结构: C:\openssl-1.0.2j\include
以下所有操作都是在【VS2015开发人员命令提示】中进行的,具体位置一般是【开始->所有程序->Visual Studio 2015-> Visual Studio Tools】下;
1. 【编译32位openssl】 命令如下: cd C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin vcvars32.bat 1234 2. 【编译64位openssl】 命令如下: cd C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\amd64 vcvars64.bat 1234注意: 如果不是想单独拿编译好的库出来用,而是需要交叉编译,比如接着编译libcurl,则可以使用如下命令全部一次性编译32位所有版本的库:
ms\32all.bat no-asm 1实际我在通过这条命令编译的时候,也会编译失败无法继续; 如果想要交叉编译libcurl,还是用libcurl\project\build-openssl.bat更好。 目前我已经通过这个文件成功交叉编译了libcurl with openssl gzip的release版本的lib, 详细方法请参考我的博客:http://blog.csdn.net/yaojingkao/article/details/53044361
如果只是想编译OpenSSL,请接着看下面: 1)先进入openssl-1.0.2j目录
cd C:\openssl-1.0.2j 12)配置输出目录和编译类型【编译32位、64位;release、debug有区别】 命令格式如下:
perl Configure [类型] no-asm --prefix="[输出目录]" 1 [编译类型]可以选择以下: 参数含义debug-VC-WIN32编译32位debug版本VC-WIN32编译32位release版本debug-VC-WIN64A编译64位debug版本VC-WIN64A编译64位release版本[输出目录]理论任何地方都可以。自己确定好就行
3)配置模式:
【编译32位openssl】 命令如下:
ms\do_ms.bat 1感谢网友:WeiXin_zjmgly指出,如果之前编译使用了no-asm参数,则需要修改命令为:
ms\do_nasm 1否则会在编译引用了该openssl库的工程中出现”error LNK2001和error LNK2019 无法解析的外部符号”这个错误。(该解决方法由 WeiXin_zjmgly 提供)
【编译64位openssl】 命令如下: ms\do_win64a.bat 1执行这一步之后,在ms目录下会生成nt.mak和ntdll.mak两个编译配置文件 nt.mak 用于生成静态lib库 ntdll.mak 用于生成动态dll库
openssl目录:c:\openssl-1.0.2j\ 以编译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.2j\build-vc14-debug-win64-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 12345678至此,就可以将c:\openssl-1.0.2j\build-vc14-debug-win64-dll目录复制到需要使用的地方就可以使用了。
最后,附上一个我编译好的VS2015版本的openssl(1.0.2j)所有库,共八个链接库。 下载地址:http://download.csdn.net/detail/yaojingkao/9673763