windows下 使用vs command tools 和mingw 分别编译 openssl

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:\openssl\build32 --openssldir=E:\openssl\build\SSL

编译64位
perl configure VC-WIN64A no-shared --prefix=E:\openssl\build32 --openssldir=E:\openssl\build\SSL

说明:
no-shared 参数是编译成静态库, 不加的话默认编译成动态库, 不过生成动态库的同时也会生成静态库
--prefix 参数指定最后的安装目录, 供openssl install所用,
--openssldir 参数是最后SSL的存放位置, 里面会有一些配置信息等.
以上参数说明具体可以看Configure, NOTEW_WIN文件说明 .当然还有其它参数说明,

no-asm参数表示不使用汇编,其实使用汇编可以加快加密解密效率,但是需要安装一个nasm汇编编译器

还可以添加zlib支持:

1.动态链接参数:zlib-dynamic --with-zlib-include="D:xxx\zlib\include" --with-zlib-lib="D:\xxx\zlibstat.lib"

2.静态连接参数:zlib --with-zlib-include="D:xxx\zlib\include" --with-zlib-lib="D:\xxx\zlibstat.lib"

生成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=/openssldir --openssldir=/openssldir/SSL
 ./Configure mingw --prefix=/openssldir --openssldir=/openssldir/SSL

说明: 默认静态库, 指定shared选项,生成静态库

4: make

5: make install

6: make clean

 

三:编译旧版本openssl

1、配置config文件: perl Configure VC-WIN32 no-asm --prefix="xxx"
2、创建makefile文件: ms\do_ms.bat
3、编译动态库: nmake -f ms\ntdll.mak
4、测试: nmake -f ms\ntdll.mak test
5、安装:nmake -f ms\ntdll.mak install
6、清理:nmake -f ms\ntdll.mak clean

64位动态库:
1、配置config文件: perl Configure VC-WIN64A no-asm --prefix="xxx"
2、创建makefile文件: ms\do_win64a.bat
3、编译动态库: nmake -f ms\ntdll.mak
4、测试: nmake -f ms\ntdll.mak test
5、安装:nmake -f ms\ntdll.mak install
6、清理:nmake -f ms\ntdll.mak clean

如需要编译静态库:需要将上述的ntdll.mak 替换成nt.mak
动态库:默认编译是MD的如果要编译MT的,则需要在第2步完成以后,修改ntdll.mak文件的编译选项
编译debug版本的需要将上述 VC-WIN32,VC-WIN64A 替换成 debug-VC-WIN32, debug-VC-WIN64A

 

 

附录:

https://www.cnblogs.com/chinalantian/p/5819105.html

https://blog.csdn.net/lianai6356/article/details/105319986

https://blog.csdn.net/lixiang987654321/article/details/81154613

https://cloud.tencent.com/developer/article/1343632

 

旧版本参考连接:

https://blog.csdn.net/y601500359/article/details/89518497
https://blog.csdn.net/longji/article/details/53573173

 

 

 

posted on 2020-08-10 00:23  priarieNew  阅读(1308)  评论(0编辑  收藏  举报

导航