之前安装过1.1版本,Windows环境下C++ 安装OpenSSL库 源码编译及使用(VS2019)_vs2019安装openssl_肥宝Fable的博客-CSDN博客
后来发现linux编译不过,以为是版本问题,相差太大,所以降一下版本,以免后面写代码有问题。
当然结果发现是没有配链接的库:
Linux环境下C++ 接入OpenSSL-CSDN博客
不过安装1.0.2版本的时候,发现还是有很多坑的,所以记录下来以免后面还是踩坑。
流程可能稍微缩减了一下,由于安装1.1版本的时候,已经装了好多配套的东西,这里不再重复叙述,参考上面1.1版本的文章就好。可能有些东西是多余的。
另外网上找到解决问题的参考文章:
Windows 编译 openssl-1.0.2p静态库 32/64、debug/release、MT/MTd-腾讯云开发者社区-腾讯云
以下是正文:
根据需要编译的平台选择相应的控制台,64位的选择x64,32位的选择x86
执行:
perl Configure VC-WIN32 no-asm --debug --prefix=E:\xxx\common\openSSL --openssldir=E:\xxx\common\ssl
结果并没有跟1.1版本的那样输出,不过好像并没有报错
跟着
nmake
然后就提示错误了,
makefile(243) : fatal error U1001: 语法错误: 宏中的非法字符“{”
找了好久都没找到问题,后来直接搜版本才搜到点东西,
需要修改 ms/do_nasm.bat
文件,将原来
perl util\mkfiles.pl >MINFO
perl util\mk1mf.pl nasm VC-WIN32 >ms\nt.mak
perl util\mk1mf.pl dll nasm VC-WIN32 >ms\ntdll.mak
perl util\mk1mf.pl nasm BC-NT >ms\bcb.makperl util\mkdef.pl 32 libeay > ms\libeay32.def
perl util\mkdef.pl 32 ssleay > ms\ssleay32.def
修改为:
perl util\mkfiles.pl >MINFO
perl util\mk1mf.pl nasm debug VC-WIN32 >ms\nt.mak
perl util\mk1mf.pl dll nasm debug VC-WIN32 >ms\ntdll.mak
perl util\mk1mf.pl nasm BC-NT >ms\bcb.makperl util\mkdef.pl 32 libeay > ms\libeay32.def
perl util\mkdef.pl 32 ssleay > ms\ssleay32.def
就是将第二行和第三行编译选项增加了 debug。修改完成后执行 ms/do_nasm.bat
。
.\ms\do_nasm.bat
直接搬别人的图了,懒得再执行一次了。
修改完成执行如下命令开始编译
nmake -f ms\nt.mak
lib文件在out32.dbg目录下,libeay32.lib、ssleay32.lib
执行完之后,发现只有lib,没有dll文件
要修改 ms\ntdll.mak 将 CFLAG 的 /MDd 属性修改为 /MTd,与你调用项目匹配):
nmake -f ms\ntdll.mak
这一步不知道是会直接生成lib和dll还是只生成dll的。
执行完之后,dll文件在out32dll.dbg
补充一点:dll文件是第二天才搞出来的。编译出lib之后,拿去编译项目工程,发现能编译过了,然后运行的时候,发现没有dll文件居然也可以运行。而且已经很晚了就没继续搞了。
后来越想越不对劲,肯定要dll文件的,全局搜索一下,发现好多软件都自带libeasy32.dll和ssleay32.dll,如果有哪个路径是在环境变量中的,应该会被搜索到。所以我还是趁还记得,编译了一下dll文件放到工程对于目录里面了。