openssl版本: openssl-1.1.1
一:用windows 编译openssl
1: 下载openssll源码, 至少1.1.0版本以上
2: 下载perl, 本人机器64位, 所以下载了64位的版本 并安装, 安装好以后, 设置系统path环境变量:
环境变量设置好以后, 打开一个新的cmd, 输入命令: perl -v, 如果有输出信息代表安装成功. 这里安装完perl以后再安装一下dmake, 不然后续执行perl命令的时候, 会提示没有安装dname或者nmake,网上有一种说法是不安装dname, 把vs的nmake目录设置一下系统环境变量也行, 具体读者自行测试一下吧. 我设置了vs的nmake环境变量, 也同时安装了dname. 安装dmake的方式具体如下:
打开控制台 ,输入:cpan
在cpan控制台下:
cpan> install dmake
然后,将 dmake.exe 加入 PATH 环境变量。
最后的结果:
3: 下载Nasm 汇编器, 并安装, 要下载和系统位数一样的安装包. 安装好以后将安装目录的nasm添加到系统环境变量中:
4: 开始编译, 本人本机安装的是vs 2017, 就拿vs 2017举例了. 打开vs 2017 编译命令行,如下图所示, 这里要注意了, 有这么多命令行, 我们要选的就是画红框的那两个, 一个是编译x64 native tools 是编译64位的, x86 native tools是编译32位的:
定位到openssl源码目录:
编译32位
perl configure VC-WIN32 no-shared --prefix=E:openssluild32 --openssldir=E:openssluildSSL
编译64位
perl configure VC-WIN64A no-shared --prefix=E:openssluild32 --openssldir=E:openssluildSSL
说明:
no-shared 参数是编译成静态库, 不加的话默认编译成动态库, 不过生成动态库的同时也会生成静态库
--prefix 参数指定最后的安装目录, 供openssl install所用,
--openssldir 参数是最后SSL的存放位置, 里面会有一些配置信息等.
以上参数说明具体可以看Configure, NOTEW_WIN文件说明 .当然还有其它参数说明,
生成makefile文件后, 下面就一样了:
nmake
nmake test, //这条命令可以不执行
nmake install
最后执行清除, 目的是删除之前编译生成的文件, 可以重新编译下一个平台了
nmake clean
二: 用mingw编译openssl
不过还是先建议搜一些msys, msys2, mingw mingw64的资料看一下, 我用的是msys2+mingw64+mingw32编译的
网上有好多方法,但是介绍一下我的方法:
1: 安装环境, 安装msys2 //https://www.msys2.org,
安装好以后, 会在安装目录下有三个关键的文件:
mingw32.exe mingw64到开到相应的环境中.
msys2_shell.cmd是msys2的管理工具,
2: 安装mingw64 mingw32 make
运行msys2_shell.cmd
输入: pacman -Sl | grep gcc
找到响应的包,然后安装, 见下图:
用同样的命令安装 mingw-w64-i686-gcc
安装make :
pacman -S make
最后用命令pacman -Q -e 查看一下是否安装完毕:
3: 编译:
打开对应的mingw32 , mingw64, 分别编译32位 64位, 命令如下:
./Configure mingw64 --prefix=/opensslild64 --openssldir=/opensslild64/SSL
./Configure mingw --prefix=/opensslild32 --openssldir=/opensslidl32/SSL
说明: 默认动态库, 指定no-shared选项,生成静态库
4: make
5: make install
6: make clean