qt5.8_for_vs2015 and openssl静态编译-阿里云开发者社区

开发者社区> py_tty_0529> 正文

qt5.8_for_vs2015 and openssl静态编译

简介: 关于qt5.8版本的通用编译参考,现假定已经静态编译了qt5.8版本,需要追加对openssl的静态编译, 就网络network模块进行编译.
+关注继续查看

关于qt5.8版本的通用编译参考<<qt5.8_for_vs2015静态编译>>,现假定已经静态编译了qt5.8版本,需要追加对openssl的静态编译。

就网络network模块进行编译举例:

1)qt5.8使用的openssl版本为1.0.2,其他平台可以去http://wiki.qt.io/Qt_5.8_Tools_and_Versions查看

2)去https://www.openssl.org/source/网站下载v1.0.2o源码版本,另外openssl的源码编译需要perl支持,若没有可取http://www.activestate.com/activeperl/下载,win64或win32看自身需要

3)先安装perl,然后编译openssl

将openssl-1.0.2o.tar.gz解压,启动vs2015的命令工具(x86或win64按自身需要)

进入openssl该解压目录,openssl用到了第三方库文件:

ws2_32.lib gdi32.lib advapi32.lib crypt32.lib user32.lib

,本人的是win8系统,本身有这些库,一般在C:\Program Files (x86)\Windows Kits内,由于该目录存在空格,因此设置一个快捷目录指向需要的库目录,例如

C:\software\OpenSSL_Code_Win64\ex_lib_x64 -> C:\Program Files (x86)\Windows Kits\8.0\Lib\win8\um\x64

阅读INSTALL.W32和INSTALL.W64了解安装命令,需要特别支持的是静态编译(static: nmake -f ms\nt.mak),下面是本人的安装样例:

perl Configure VC-WIN64A no-asm no-hw no-shared --prefix=C:\software\OpenSSL_Code_Win64 -L"%OPENSSL_EX_LIBS%"

ms\do_win64a

执行上述两个命令后会在ms目录下生成nt.mak工程文件,里面EX_LIBS涉及到第三房库的配置,原有的是不指定目录的,

nmake -f ms\nt.mak

nmake -f ms\nt.mak install

编译安装完成后,设置环境变量,qt配置openssl时会查询OPENSSL_LIBS字段,通过环境变量简化配置

      如:

       OPENSSL_DIR = C:\software\OpenSSL_Code_Win64

4)启动vs2015(x64/x86)命令工具,进入qt5.8源码目录,例如,C:\software\Qt\Qt5.8.0\5.8\Src\

删除config.cache文件

配置编译环境

 $ set QTDIR=C:\software\Qt\Qt5.8.0\5.8\msvc2015_64
 $ set PATH=%PATH%;%QTDIR%\bin
 $ set QMAKESPEC=win32-msvc2015

qt静态编译配置,假设已经做过qt源码静态编译可跳过,假设qt安装路径C:\software\Qt\Qt5.8.0,进\5.8\msvc2015_64\mkspecs\common目录,打开msvc-desktop.conf文件,修改
        QMAKE_CFLAGS_RELEASE    = -O2 -MD
        QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += -O2 -MD -Zi
        QMAKE_CFLAGS_DEBUG      = -Zi -MDd
        改为:
        QMAKE_CFLAGS_RELEASE    = -O2 -MT
        QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += -O2 -MT -Zi
        QMAKE_CFLAGS_DEBUG      = -Zi –MTd

        修改:
        在QMAKE_LEXFLAGS后面加上 –static

配置命令(为了排版下列命令有换行,实际需连续的)脚本conf.bat,配置完成运行,红色部分为新增配置:

configure -confirm-license -opensource -platform win32-msvc2015 -debug-and-release -static -openssl-linked -force-debug-info -prefix "C:\software\Qt\Qt5.8\5.8\msvc2015_64_static" -qt-sqlite -qt-pcre -qt-zlib -qt-libpng -qt-libjpeg -opengl desktop -qt-freetype -nomake tests -nomake examples -I"%OPENSSL_DIR%\include" -L"%OPENSSL_DIR%\lib" -L"%OPENSSL_EX_LIBS%" OPENSSL_LIBS="$$(OPENSSL_DIR)\lib\libeay32.lib $$(OPENSSL_DIR)\lib\ssleay32.lib ws2_32.lib gdi32.lib advapi32.lib crypt32.lib user32.lib"

 

配置结束后会提示OPENSSL_LIBS需要配置,先不管它

5)进入C:\software\Qt\Qt5.8.0\5.8\Src\qtbase\src\network目录

防止旧编译结果,可以make clean清楚旧数据,另外防止不彻底,去C:\software\Qt\Qt5.8.0\5.8\Src\qtbase\lib目录把network相关的生成文件手动删除掉

修改network.pro文件,追加openssl的头文件,防止单独编译缺失,如下

CONFIG += static

INCLUDEPATH += $$(OPENSSL_DIR)\include

查看qtnetwork-config.pri文件,的OPENSSL_LIBS 是否正确,就是刚才配置命令“conf.bat”的设值,本实例的如下:

OPENSSL_LIBS = C:\\software\\OpenSSL_Code_Win64\\lib\\libeay32.lib C:\\software\\OpenSSL_Code_Win64\\lib\\ssleay32.lib ws2_32.lib gdi32.lib advapi32.lib crypt32.lib user32.lib

6)编译和安装network工程:

qmake -o Makefile network.pro

nmake

nmake install

7)使用,在.pro工程文件中添加

QT += network

其他涉及到openssl调用的模块类似

 

 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
大规模 K8s 集群管理经验分享 · 上篇
11 月 23 日,Erda 与 OSCHINA 社区联手发起了【高手问答第 271 期 -- 聊聊大规模 K8s 集群管理】,目前问答活动已持续一周,由 Erda SRE 团队负责人骆冰利为大家解答,以下是本次活动的部分问题整理合集,其他问题也将于近期整理后发布,敬请期待!
61 0
shell编程05【自定义函数和高级命令】
shell编程05【自定义函数和高级命令】
4 0
双11特刊 | 全面云原生化,数据库实例独共享混部 最高降低30%成本
2021年双十一是阿里巴巴集团的核心应用全面云化的第二年。今年在保证稳定性的前提下,主要探索如何利用云原生的技术优势,降低成本,提升资源利用率。在今年大促中,针对核心集群采用独享共享实例混部,统一了底层资源,结合交易业务云盘化使得混部单元大促成本下降30%+。
19 0
只需单击三次,让中文GPT-2为你生成定制故事
想要 GPT-2 生成中文故事,听听它对各种主题的看法?你可以试试这个中文预训练 GPT-2 项目,它开源了预训练结果与 Colab Demo 演示,只需要单击三次,我们就能生成定制的中文故事。
4 0
关于 Kubernetes中Volume的一些笔记
男女情事,谁先动心谁吃亏,越吃亏越难忘,到最后,到底是喜欢对方呢,还是喜欢自己,都搞不清楚了,答案偏偏在对方身上,所以才说,由爱故生忧。--------《剑来》
4 0
ABAP Netweaver, SAP Cloud Platform和Kubernetes的用户区分
ABAP Netweaver, SAP Cloud Platform和Kubernetes的用户区分
4 0
在SAP ABAP和Hybris Commerce里启动后台作业
在SAP ABAP和Hybris Commerce里启动后台作业
5 0
只需单击三次,让中文GPT-2为你生成定制故事
想要 GPT-2 生成中文故事,听听它对各种主题的看法?你可以试试这个中文预训练 GPT-2 项目,它开源了预训练结果与 Colab Demo 演示,只需要单击三次,我们就能生成定制的中文故事。
3 0
历经 7 年双 11 实战,阿里巴巴是如何定义云原生混部调度优先级及服务质量的?
本文将聚焦在 K8s 层的容器优先级和服务质量模型上,希望给业界提供一些可借鉴的思路。
9 0
关于SAP Commerce Cloud CORS policy的设置问题
关于SAP Commerce Cloud CORS policy的设置问题
4 0
+关注
py_tty_0529
多年从事自动化系统研发,当前对物联网感兴趣
26
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载