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) 编辑 收藏 举报