静态编译OpenSSL并整合到Qt
Posted lsgxeva
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了静态编译OpenSSL并整合到Qt相关的知识,希望对你有一定的参考价值。
静态编译OpenSSL并整合到Qt
来源 https://blog.csdn.net/lixiaoxin1989/article/details/78421573
MSVC版本:
1. 下载OpenSSL源码
1.1 下载OpenSSL的源码:https://www.openssl.org/source/
1.2 解压到C:openssl-1.0.2l
2. 编译OpenSSL源码
2.1 打开VS的命令工具:
32位:
64位:
2.2 使用cd命令定位到源码文件夹:
cd C:openssl-1.0.2l
2.3 配置makefile:
32位:
perl Configure VC-WIN32 no-asm --prefix=C:/QtStaticLibs/OpenSSL
64位:
perl Configure VC-WIN64A no-asm --prefix=C:/QtStaticLibs/OpenSSL64
2.4 输入命令
32位:
msdo_ms
64位:
msdo_win64a
2.5 输入编译命令
nmake -f ms t.mak
2.6 输入测试命令,显示passed all tests就是测试通过
nmake -f ms t.mak test
2.7 输入安装命令
nmake -f ms t.mak install
最后的C:QtOpenSSL 或 C:QtOpenSSL64即编译好的SSL库
3. 集成到Qt的静态编译版本中
在Qt的Configure命令中加入如下参数:
-openssl-linked OPENSSL_PREFIX=C:QtOpenSSL OPENSSL_LIBS="-lssleay32 -llibeay32 -lgdi32"
注意:VS2017下,OPENSSL_LIB="-llibeay32 -lssleay32 -lgdi32 -luser32 -lwsock32 -ladvapi32"
1.安装ActivePerl,并添加到环境变量
2.解压openssl源码到指定目录
3.进入VS2017自带的命令行界面,注意区分版本
本文进入的是x64 Native Tools Command Prompt for VS2017
4.进入openssl解压目录,E:mylibopenssl-1.0.2l
运行:perl Configure VC-WIN64A no-asm –prefix=E:mylibopenssl
进行相关的配置
注意:prefix指定安装目录,VC-WIN64A安装平台
5.编译动态库和静态库
运行 nmake -f ms
tdll.mak进行编译动态库
运行 nmake -f ms
t.mak进行编译静态库
6.测试编译库
测试动态库:cd out32dll>..ms est
测试静态库:cd out32l>..ms est
运行结果为:passed all tests 即编译成功
注: 清除上次动态库编译,以便重新编译:nmake -f ms
tdll.makclean;
清除上次静态库编译,以便重新编译:nmake -f ms
t.makclean
7.安装库
运行 nmake -f ms
tdll.mak install 进行安装动态库
在E:mylibopenssl文件目录下生成bin/include/lib/ssl四个文件目录。
运行 nmake -f ms
t.mak install 进行安装静态库
MinGW版本:
1.在MinGW官网上下载MSYS( MSYS ),安装后将安装目录中的 /etc/fstab 文件内容改为:
C:/Qt/Qt5.12.3/Tools/mingw730_32 /mingw
其中 C:/Qt/Qt5.12.3/Tools/mingw730_32 是MinGW所在目录。
打开MSYS,输入gcc -v,显示gcc版本则说明MinGW环境已经配置好了。
2.在MSYS中进入openssl目录输入如下指令:
32位:
perl Configure mingw no-shared no-asm --prefix=C:/QtStaticLibs/OpenSSL
64位:
perl Configure mingw64 no-shared no-asm --prefix=C:/QtStaticLibs/OpenSSL64
configure完成后依次输入:
make depend
make
make install
=================== End
以上是关于静态编译OpenSSL并整合到Qt的主要内容,如果未能解决你的问题,请参考以下文章