本文使用的系统环境为Windows10家庭版64位, Intel芯片, 用于指导Windows10其他版本的编译应该没有问题, Windows7用户应该也可以, 应该只有在配置环境变量那步有所区别.
关于下载这件事 — 大概只适用于那些看上去很古老的下载页吧~
一般只要下载
.tar.gz
这类文件就行了, 括号里的文件是用来验证
.tar.gz
文件是否被篡改等, 不过在有https加持的情况下, 一般不需要关注这个, 至于用于验证发布者的PGP签名, 也是一样的道理.
此后, 看了下说明文档以及网上的一堆教程后, 试着编译了几次, 也算是踩了点坑后才来写这篇文章.
后面仔细阅读了下载页的英文说明:
The latest stable version is the 1.1.1 series. This is also our Long Term Support (LTS) version, supported until 11th September 2023. Our previous LTS version (1.0.2 series) will continue to be supported until 31st December 2019 (security fixes only during the last year of support). The 1.1.0 series is currently only receiving security fixes and will go out of support on 11th September 2019. All users of 1.0.2 and 1.1.0 are encouraged to upgrade to 1.1.1 as soon as possible. The 0.9.8, 1.0.0 and 1.0.1 versions are now out of support and should not be used.
简而言之, 就是官方还会更新三四年的
1.1.1x
版本(简称技术支持), 而
1.0.2x
版本过完今年后(写文时是2019年)就不再更新, 所以不要再用旧版本.
所以改成下载第三个(版本号:
1.1.1c
), 打开压缩包会看到以下内容:
openssl-1.1.1c
– 源代码文件夹, 将其解压到任意目录下,
但不建议所在目录的绝对路径中含有任何中文(常识), 否则可能出现一些奇奇怪怪的问题.
pax_global_header
– 该文件不需要处理, 看了下内容, 盲猜误打包, 但确实用不上.
我是将源代码解压至当前账户的文档目录(
C:\Users\用户名\Documents\
), 解压后的完整路径是
C:\Users\i\Documents\Scripts\openssl-1.1.1c\
打开源代码目录, 查看README文件:
INSTALLATION
README
1 2 3
See the appropriate file ---- 查看相应的文件: INSTALL Linux, Unix, Windows, OpenVMS, ... NOTES.* INSTALL addendums for different platforms ---- 不同平台的安装附录
也就是说, 我们要阅读「 INSTALL 」和「 NOTES.WIN 」这两个文件. 文件里给出了多种编译方式, 但都需要用到
Perl
, 所以先去
下载
该程序(可能需要注册账户), 我下的是5.28版本.
安装类型随意, 硬件资源优秀的可以选
Complete
, 这里用
Typical
足够.
猜测perl是负责生成编译参数的, 而真正负责编译的是
nmake
, 当然官方也给了
mingw
和
Cygwin
的编译步骤, 这边只讨论
nmake
的使用.
以鄙人目前所了解到的, vs(不是vs code)有提供
nmake
(在附加工具里), 电脑上刚好装了2017个人版, 就拿来用了. 这里使用的是
VS 2017的开发人员命令提示符
键盘按住
Win
+
R
, 运行以下代码大概也能打开
1
%comspec% /k "C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\Tools\VsDevCmd.bat"
装了其他版本(如
201[0359]
)的同学, 请自行修改路径或使用开始菜单打开.
根据
INSTALL
文件的说明, 在Windows下编译需要执行以下命令:
On Windows
INSTALL
1 2 3 4
perl Configure { VC-WIN32 | VC-WIN64A | VC-WIN64I | VC-CE } nmake nmake test nmake install
还有一些编译选项, 但篇幅过长, 这边不一一贴出了.
除非需要某些特性, 否则可以不带任何编译选项.
打开该工具后, 切换运行目录到源代码目录下(
C:\Users\i\Documents\Scripts\openssl-1.1.1c\
)
1
perl Configure VC-WIN64A no-asm --prefix="C:\Users\i\Documents\Scripts\openssl"
Configure
— 实际上是源代码目录下的一个文件
VC-WIN64A
— 大部分64位Windows只需要用到该参数, 32位的直接用
VC-WIN32
就好.
后面突然觉得, 「 会不会
A
是AMD,
I
是Intel 」, 差点就要改成
VC-WIN64I
.
no-asm
— 不使用汇编优化, 否则命令执行出错, 提示要安装NASM
--prefix=
— 指定编译文件后存放的目录
C:\Users\i\Documents\Scripts\openssl
— 目标路径, 前后加引号是为了防止路径中存在空格等特殊字符, 导致程序解析错参数
执行命令后出现了类似警告的文本(白底红字)
大概意思是没有配置nmake或者dmake的环境变量, 之前编译
1.0.2s
的时候也有出现, 不过不配置是可以编译成功的, 所以觉得这边做不做都不影响, 如有严重强迫症的同学可以参考
这篇文章
操作(未验证)
接下来执行
nmake
的时候也验证了我的想法, 确实可以正常工作,
只是到最后会爆出错误, 导致编译终止:
1 2 3 4 5 6
ml64 /c /Cp /Cx /nologo /Zi /Focrypto\uplink-x86_64.obj "crypto\uplink-x86_64.asm" 'ml64' 不是内部或外部命令,也不是可运行的程序或批处理文件。NMAKE : fatal error U1077: “ml64”: 返回代码“0x1” Stop. NMAKE : fatal error U1077: “"C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.16.27023\bin\HostX86\x86\nmake.exe" ”: 返回代码“0x2” Stop.
然后百度查了下, 其实是有
ml64.exe
这个文件, 就在
nmake.exe
那个目录里, 只是因为没有配置环境变量, cmd又切换到openssl源代码目录下运行, 所以更找不到这个文件.
但仔细想想, 其实这不就是微软自己下的坑吗? 毕竟打开的是你家的工具, 却没把自带的附加工具变成全局可用,
真是迷惑行为
. 不过想归想, 问题还是要解决的.
网址
, 有兴趣的同学去试一试吧, 可以参考
另一个博主写的文章
, 应该没我这么麻烦.
你以为这就结束了?
NO NO NO
该项目官网
下载安装包,
目前官网是下面那样, 估计没那么快变更网站样式, 如果有改的话, 就自己看着办吧.
下载
Stable
就可以了, 点击版本号进入
实际的下载页
这里根据系统类型选择即可, 进入
win64
文件夹后才会看到exe安装包.
两个都是安装包文件, 选择其中一个下载即可. 下载
zip
文件的话需要解压文件.
出于下载最小的文件会快一点的想法(因为我国出口宽带紧缺), 我下载了
zip
, 然后发现不是我想的那回事.
用最熟悉的说法, 就是
绿色免安装版
.
将文件夹解压后, 在环境变量里添加程序根目录, 如果不放心的话可以再把
rdoff
文件夹添加到环境变量.
然后重新打开cmd, 输入
nasm -v
, 有输出版本号的话就代表配置成功.
ActivePerl-5.28.1.2801-MSWin32-x64-24563874.exe
nasm-2.14.02-installer-x64.exe
nasm-2.14.02-win64.zip
openssl-1.1.1c.tar.gz