新手菜鸟(初学者)如何获得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中去,如下

新手菜鸟(初学者)如何获得openssl对应的库文件

准备好上述工具后,下面就可以执行下述命令并获得对应的库文件了。

此时假设需要生成32位的dll库文件。步骤如下:

1、电脑左下角开始菜单——输入cmd命令——进入控制台

2、将命令提示符定位到D:\openssl-1.0.2p

新手菜鸟(初学者)如何获得openssl对应的库文件

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界面。

新手菜鸟(初学者)如何获得openssl对应的库文件

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环境变量。

新手菜鸟(初学者)如何获得openssl对应的库文件

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

通过如上方式,我成功得到了自己想要的文件,虽然有点麻烦,中间出错的问题也一大堆,但毕竟达到了目的!