新手菜鸟(初学者)如何获得openssl对应的库文件
本文查阅和参考了许多文章,主要包括:concussion的 https://www.cnblogs.com/zc2014blog/archive/2017/08/02/7272355.html 和xiliang_pan的https://blog.****.net/xiliang_pan/article/details/9021791,感谢二位分享的学习经验!
由于项目需要,用到了openssl提供的一些函数,需要获得库文件,并且,需要32位、64位各自对应的库文件。
获得这些库文件,可以有两种方式:
1、直接从网上下载别人下载好的。①不管是32位还是64位,直接百度,都能从网上找到别人编译好的文件,直接写在即可。②可以从http://slproweb.com/products/Win32OpenSSL.html这个网站上下载,是一个安装程序,执行完毕后会得到一个文件夹,文件夹中即为所需的库文件,并且32位、64位的都可以从这个网站下载。
2、通过下载openssl源码 然后直接通过源码编译获得所需库文件。
准备事项:
①下载openssl源文件。下载地址:https://www.openssl.org/source/。不要图新下载1.1.0 那个版本,我下载以后后面发现有些命令操作总是执行不了,所以放弃了。 我下载的是:openssl-1.0.2p.tar.gz (SHA256) (PGP sign) (SHA1) 基本上一路执行到成功! 下载后将程序解压到D:\openssl-1.0.2p中。 【其实放哪个盘随便你,只要自己找得到就行】
②下载并安装Nasm汇编器,并将D:\Program Files\NASM
添加到系统环境变量Path中。 下载地址:http://www.nasm.us/pub/nasm/releasebuilds/。下新版本没错。
③下载并安装ActivePerl。
下载地址:http://www.activestate.com/activeperl/downloads
我下载的是:5.24.1.2402 Windows Installer(EXE)
打开命令提示符,将其定位到C:\Perl64\eg
目录下,执行perl example.pl
,若提示:Hello from ActivePerl!
则说明Perl安装成功,可以开始使用Perl的相关命令来进行OpenSSL的安装了。
④ visual studio安装程序,无论是2008 2010 及以上版本,都可以,并不是说让你用VS来编译执行源代码,而是要利用VS提供的工具来进行后续的编译,如nmake。 安装好2008 2010以后,还需要做一件事情,就是进入环境变量中,把两个路径假如path中去。仔细找找vs的安装目录,应该可以找到 ../VC/bin/ .../VC/bin/amd64/两个文件夹,将二者加入到path中去,如下
准备好上述工具后,下面就可以执行下述命令并获得对应的库文件了。
此时假设需要生成32位的dll库文件。步骤如下:
1、电脑左下角开始菜单——输入cmd命令——进入控制台
2、将命令提示符定位到D:\openssl-1.0.2p
。
3、输入perl Configure VC-WIN32 no-asm --prefix=D:\openssl32
(将其安装到D:\openssl32
,就是说最后你的库文件将会在这个文件中生成)。
4、输入ms\do_nasm
此时如果出现 ms\uplink.c错误,无法打开包括文件"windows.h":no such file or direction,则进入上面说到的VS安装路径下,进入../VC/bin/目录下,执行vcvars32.bat文件,将当前dos命令界面设置成符合VS环境变量。记住,执行完vcvars32.bat文件后不要退出界面,假如新开或者退出以后再开,那么刚才执行的vcvars32.bat设置将会失效,新打开dos命令界面的话,那么就得重新执行一次vcvars32.bat界面。
5、输入nmake -f ms\ntdll.mak
,执行完后会在openssl-1.0.2l
目录下生成一个out32dll的文件夹,里面包含了一些静态库、动态库和.exe文件。
6、输入nmake -f ms\ntdll.mak test
,若最终显示passed all tests
说明生成的库正确。
7、输入nmake -f ms\ntdll.mak install
,则会在D:\openssl32
目录下生成bin、include、lib、ssl四个文件夹。
一切顺利的话,此时在openssl32
目录下就能得到需要的库文件了。
假如此时需要生成64位的openssl库,生成步骤如下:
步骤1 2同上。
3、输入perl Configure VC-WIN64A no-asm --prefix=D:\openssl64
(将其安装到D:\openssl64
,就是说最后你的库文件将会在这个文件中生成)。
同上,在执行下一步之前,此时应进入上面说到的VS安装路径下,进入../VC/bin/amd64目录下,执行vcvarsamd64.bat文件,将当前dos命令界面设置成符合VS环境变量。
4、输入ms\do_win64a
此时,在执行第5步之前,需要进入D:\openssl-1.0.2p
文件夹中,也就是进入源码文件中,按如下方式修改:
用记事本打开并编辑ms/ntdll.mak文件(生成静态库时则编辑ms/nt.mak文件),修改输入目录:
# The output directory for everything intersting
OUT_D=out64
# The output directory for all the temporary muck
TMP_D=tmp64
# The output directory for the header files
INC_D=inc64
INCO_D=inc64/openssl
修改完成后记得保存后退出!
5、输入nmake -f ms\ntdll.mak
,执行完后会在openssl-1.0.2l
目录下生成一个out64dll的文件夹,里面包含了一些静态库、动态库和.exe文件。
6、输入nmake -f ms\ntdll.mak test
,若最终显示passed all tests
说明生成的库正确。
7、输入nmake -f ms\ntdll.mak install
,则会在D:\openssl64
目录下生成bin、include、lib、ssl四个文件夹。
此时,进入D:\openssl64文件夹,将会看到所需要的生成好的库文件。
如何验证我们生成的库文件确保是32位 和64位的文件么?
方法参考:https://blog.****.net/chenjianqi0502/article/details/79034403
通过如上方式,我成功得到了自己想要的文件,虽然有点麻烦,中间出错的问题也一大堆,但毕竟达到了目的!