OpenSSL 在windows系统下的编译全解

由于google等强推TLS/SSL网络加密,不得不准备为自己的服务器也加入TLS/SSL支持,反正我们能得到的支持TLS/SSL的库就那么几个,mozila的库太复杂,基本可以排除,GNU的库,因为GPL的关系,也被排除,那么剩下的就只有OpenSSL符合要求了,不过它也确实符合要求,因为是c编写了所有实现[除界面交互确认部分,我个人认为这个最好还是直接设置一个开关来由调用者确定是否交互,而不是现在这样靠连接时是否是命令行来做选择],不需要第三方库,而且允许静态连接到个人的软件里而不需要开源,最关键的是这货能跨平台,因此就选它了.

看了半天文档,我的系统是windows7 sp1 x64 , 安装了vs2017社区版 和Active perl

第一步,

请从 https://www.openssl.org 下载稳定版本,我下的是1.1.0h, 编译说明里,如果要本地优化,还需要下载Nasm,但实际上我们没那么多要求,直接用no-asm选项可以跳过,因此不需要下载NASM.

第二步

由于它的配置是使用perl写的,因此需要你安装一个perl环境,官方推荐的是ActivePerl, 按说的去下载安装好了,不过很慢,我不喜欢在自己的计算机上安装太多偶尔用一次的软件,用完就uninstall了

第三步

安装visual c++ (建议安装visual studio 2017 社区版,免费的,编译这货足够,选择的时候记得一定要选择上64位开发环境和库)

官方也推荐使用MingW+MSYS系统,也就是Linux 里的GNU gcc的windows版本,但是我觉得最好用vc,没有几个人会在windows平台开发编译使用MingW吧,除非是从Linux平台移植原生代码,因此这里建议你用vc,不要用这货.

第四步

将下载的openssl-1.1.0h.tar.zip解压到目录 [不要解压到c:根目录下,否则权限问题会引发各种问题]

第五步

到windows 开始菜单 所有程序 -> Visual studio 2017 ->Visual studio Tools->VC ->

这里千万要注意,不同的编译目标要选择不同的编译环境,否则可能会提示连接错误,x86 x64目标机不符等,此外每次编译,建议你重新解压源代码得到一个全新的目录进行编译,否则可能有后遗症.

 第六步:   首先切换到openssl所在目录下,然后,如果是x86环境,请输入perl Configure VC-WIN32 no-asm --prefix="c:\download\opensslh110\build_release32" , 如果是x64环境 , 请输入 perl Configure VC-WIN64A no-asm --prefix="c:\download\opensslh110\build_release64" ,其中, --prefix=是指定的库和工具头文件等最终输出目录,请根据实际进行修改, 实际最后成功后会出现 bin head lib html等四个子目录,里面分别存放的是工具 头文件 静态库 文档 注意32位和64位的区别, 执行中可能会提示你nmake不存在的警告,忽略它, 这是openssl那帮做开发的人对windows环境下变量并不熟悉,错误检测导致的警告.

第七步

请输入 nmake

不需要任何参数,因为上面的配置实际都写到makefile里了,正常情况下除了警告不会有错误,如果发生了错误,请检查你是否32位和64位环境搞混了

第八步

请输入 nmake test

正常情况下,所有测试通过,出现pass提示

最后,完成,请输入

nmake install

这样就可以在--prefix=指定的目录下得到你的库等输出了

最后,这货会产生大量的临时文件,建议到你自己账户下的LocalData下Temp子目录里把临时文件都删除掉

好了,到这里windows下编译全部通过

这里补充 一下,如果是需要静态库,需要加上no-shared 参数, 那么你必须先安装dmake工具,用vc自带的nmake会失败,安装指令是 在perl安装完成后,以管理员权限打开命令行,执行ppm install dmake, 这需要联网执行的.

然后将配置修改成perl Configure VC-WIN32 no-asm no-shared --prefix="c:\download\opensslh110\build_release32"  ,64位修改成 perl Configure VC-WIN64A no-asm no-shared --prefix="c:\download\opensslh110\build_release64" ,这样就可以通过编译了,如果在自己的项目里使用编译出来的静态库失败,那么请加上类似crypt32.lib等依赖库,一般就可以解决,但是注意,加了no-shared以后,最后的nmake install 命令可能失败,需要手动拷贝了

  • 12
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值