Qt —— 手动编译Qt源码(附带编译openssl库)_什么情况要手动编译qt源码-程序员宅基地

技术标签: 经验总结  qt5  

一、手动编译openssl

    如果你不需要openssl的话,这一部分可以跳过。

    我的版本是:openssl1.1.1d

    下载地址:https://www.openssl.org/source/

    1. 准备工作

        下载openssl并解压,下载perl、nasm并安装。

        perl和nasm安装好后检查一下环境变量,有没有自动添加,没有的话手动添加一下

        

        看了几篇文章说还需要下载dmake,如果要编静态库是必要的,但在我的环境下测试不需要dmake也可以编译。

    2. 解压openssl

        将openssl解压到自己制定的目录,我的路径为 D:\third_party\openssl\openssl1.1.1d

        接下来就开始编译openssl

    3. 打开VS 2017命令窗口

        这里有个需要注意的,之前由于位数不对,在编译Qt,执行configure命令的时候踩了个坑,如果你想编译64位的,就打开VS2017 x64的命令窗口,在configure的时候也要去指定生成64位的库,编译Qt的时候,也要用x64的命令窗口。

        

    然后将路径切换到刚刚解压的目录:

d:
cd D:\third_party\openssl\openssl1.1.1d

    4. 执行configure命令

perl configure VC-WIN64A shared no-asm

        64位选择:VC-WIN64A 或  VC-WIN64I

        32位选择:VC-WIN32 (记得命令窗口也要换成32位的,编译Qt的时候也用32位的命令窗口)

    5. 执行nmake命令

nmake

    6. 执行nmake test命令,看是否通过

nmake test
//这一步可能会卡在70-test_comp.t,无关紧要,直接Crtl+c即可

    7. 执行nmake install

nmake install

        这一步是为了将相关文件输出到指定文件夹,如果没有指定的话默认为C:\Program Files\OpenSSl,或C:\Program Files(x86)\OpenSSl

        注意:这个路径在编译Qt的时,configure这一步会出错,因为Program Files之间有空格,识别出错。我这里没有指定输出目录,所以我手动将OpenSSL目录拷贝到了C盘下(C:\OpenSSL)

        如果想指定目录,configure时用--prefix配置项即可。

perl configure --prefix=D:\OpenSSL

    8. 查看输出目录

    

     

     

    这里会生成两个lib文件,编译Qt时会用到。dll文件在bin目录下 

    9. 查看版本

        还可以到bin目录下去查看版本的相关信息

C:
cd OpenSSL\bin
openssl version -a

        结果如下:

        

        至此,openssl就编译成功了!请记住你的输出目录(C:\OpenSSL) 

 

二、编译Qt

    我的版本是:Qt5.14.0

    请先下载好qt-everywhere-src-5.14.0,下载地址是:http://download.qt.io/archive/

    然后解压到指定目录,我的目录路径是:D:\Qt\Qt5.14.0

1. 打开VS 2017的x64命令窗口,并切换到D:\Qt\Qt5.14.0

2. 执行configure命令

    (我不确定Windows下的命令窗口在后面加 "\"是否有效,我也懒得试了,哈哈,这样写只是为了方便看,不然命令全显示在一行了,如果不行麻烦手动把 "\"和回车删掉)

.\configure -opensource -platform win32-msvc -developer-build -mp -release -v \
-confirm-license -nomake examples -nomake tests -nomake tools -no-iconv -no-dbus -no-plugin-manifests -no-opengl \
OPENSSL_PREFIX=C:\OpenSSL -openssl-linked -I  C:\OpenSSL\include -L C:\OpenSSL\lib OPENSSL_LIBS="libssl.lib libcrypto.lib Ws2_32.lib  Gdi32.lib Advapi32.lib Crypt32.lib User32.lib" -skip qt3d -skip qtactiveqt \
-skip qtandroidextras -skip qtconnectivity -skip qtdatavis3d -skip qtdeclarative \
-skip qtdoc -skip qtgamepad -skip qtgraphicaleffects -skip qtimageformats -skip qtlottie \
-skip qtmacextras -skip qtmultimedia -skip qtnetworkauth -skip qtpurchasing \
-skip qtquick3d -skip qtquickcontrols -skip qtquickcontrols2 -skip qtquicktimeline \
-skip qtremoteobjects -skip qtscript -skip qtscxml -skip qtsensors -skip qtserialbus \
-skip qtserialport -skip qtspeech -skip qttools -skip qtvirtualkeyboard -skip qtwayland \
-skip qtwebchannel -skip qtwebengine -skip qtwebglplugin -skip qtwebsockets \
-skip qtwebview -skip qtwinextras -skip qtx11extras -skip qtxmlpatterns \
-no-feature-appstore-compliant -no-feature-bearermanagement -no-feature-commandlineparser \ -no-feature-ftp -no-feature-future -no-feature-geoservices_esri -no-feature-gestures \
-no-feature-gssapi -no-feature-jalalicalendar -no-feature-sqlmodel -no-feature-sspi \
-no-feature-udpsocket

    1) 关于configure指令的相关信息,可以使用configure -help获取

    2) 我这里skip了很多项,都是Qt源码下的目录,除了qtbase、qtcharts、qtsvg等我用到的,其余的几乎全部skip了,如果你需要这些,不要skip

    3) configure -list-features可以列出所有的feature,如果你不需要,可以用-no-feature-udpsocket这样的形式来过滤,udpsocket是一个feature

    4) openssl-linked的坑

        最开始configure的时候,总是会报如下的错:

        基本上就是由于上面提到的位数问题引起的,像上面提到的注意即可。

        还有一个就是在OPENSSL_LIBS后面,除了编译openssl生成的两个库libssl.lib libcrypto.lib外,还有几个需要加上,跟我的configure命令保持一致就行了。

    5) configure成功

        configure成功,显示如下:

        

        上面还有build option的一些信息,就不贴图了。 

3. 开始编译

    执行nmake命令编译,大约等待二十分钟左右就好了(因为我configure时省略了很多)

nmake

4. 编译成功

    编译完成后,生成的库文件会出现在你qt文件夹下qtbase的lib目录下 (我的:D:\Qt\Qt5.14.0\qtbase\lib)

     

至此,手动编译Qt 就完成了。

和Qt原生的对比:

每个库都变小了一点,gui最为明显。至于具体configure的时候怎么取舍,去适配自己的项目,我还在研究当中。。。

希望这篇记录自己编译Qt过程的博客对你有帮助,如果有问题也欢迎指正。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/zhounixing/article/details/105519536

智能推荐

LR(1)分析法的总控的实现(C++实现)_输入lr分析表,写出总控程序-程序员宅基地

文章浏览阅读8.9k次,点赞14次,收藏109次。 LR(1)分析法实验设计思想及算法 (1)若ACTION[sm , ai] = s则将s移进状态栈,并把输入符号加入符号栈,则三元式变成为:(s0s1…sm s , #X1X2…Xm ai , ai+1…an#)(2) 若ACTION[sm , ai] = rj则将第j个产生式A->β进行归约。此时三元式变为(s0s1…sm-r s , #X1X2…Xm-rA , ai..._输入lr分析表,写出总控程序

Max OS下安装brew_max brew-程序员宅基地

文章浏览阅读975次。ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" < /dev/null 2> /dev/null_max brew

入手分析rtx3070和rtx2080ti哪个强?rtx3070和rtx2080ti性能对比_3070和2080ti哪个好-程序员宅基地

文章浏览阅读1.2w次。RTX3070与2080Ti/2070S性能对比评测首先我们来看看RTX3070这款显卡的参数情况,并加入2080Ti、RTX2070Super、RTX2070这三款显卡进行对比,来看看吧。2020年最新主流台式机组装电脑配置推荐(中高低配置详细推荐) https://diannao.com/ts2020年最佳笔记本电脑是谁?权威媒体发布年度十大推荐笔记本 https://diannao.com/bjb【想要购买笔记本,装机,DIY电脑,或者想换电脑.笔记本怕被坑的小伙伴建议看看】显卡参数对比_3070和2080ti哪个好

Docker Selenium(1) 搭建服務及chrome 使用 firefox_selenium/standalone-firefox-程序员宅基地

文章浏览阅读6.1k次。Docker Selenium能讓Selenium在Docker中運行,可加速建置時間及獨立出各瀏覽器的版本,保持了一定的隔離性,是非常好的測試環境。docker-selenium 官方文檔鏡像介紹selenium/hub: Grid Hub,相當於一個空白的Seleniun Server,selenium/node-chrome: Chrome節點,需加入Grid Hub才能使用。selenium/node-firefox: Firefox節點,需加入Grid Hub才能使用。sele_selenium/standalone-firefox

程序员最后归宿是什么?30或35想转行?_35程序员转行做什么工作-程序员宅基地

文章浏览阅读2.8k次。中学政治学科的课堂上,辩证唯物主义告诉我们,任何事物都包含着既对立又统一的两个方面。要如实的反映事物的本来面目,就必须坚持一分为二的矛盾分析法,对矛盾作全面的分析要运用两分法、两点论去认识事务的本质。简单的意思就是,万事万物都要看到它好的一面和不好的一面。  IT也是如此,程序员的职业也是如此。“程序员的最后归宿是什么!”、“程序员为什么到了30或35就会想要转行”、“边缘化的IT人”等等诸如_35程序员转行做什么工作

怎么实现代码的重用性?_代码重用分析报告范文-程序员宅基地

文章浏览阅读9.6k次,点赞2次,收藏4次。代码重用_代码重用分析报告范文

随便推点

C++面试总结————算法知识分类集锦_c++面试常见算法-程序员宅基地

文章浏览阅读353次。C++编程 (一)--- 基础知识https://blog.csdn.net/china1000/article/details/38945427 C++编程 (三)--- 深入C++后台开发https://blog.csdn.net/china1000/article/details/49472661 算法知识分类集锦https://blog.csdn.net/chi..._c++面试常见算法

python算法:统计列表内不重复元素个数_python判断列表元素个数不计同类-程序员宅基地

文章浏览阅读5.6k次。方法for i in a: c = c + 1/a.count(i)_python判断列表元素个数不计同类

07年三季度微软将推出支持Office Mobile 2007的WindowsMobile6_office2007 windowsmobile.cab-程序员宅基地

文章浏览阅读6.3k次。2007年注定是不平凡的一年,随着WindowsVista和2007OfficeSystem在去年的发布,很多WindowsMobile用户担心,自己的Mobile Office是否能和Vista、2007Office兼容?关于WindowsMobile5.0和WindowsMobile6对Vista的兼容问题已经由Windows Mobile Device Center”(Windows M_office2007 windowsmobile.cab

撑起12306网站,全靠这个排名第一的后端调优方案!-程序员宅基地

文章浏览阅读613次。之前有朋友说,“我们公司的系统从来都没有经过性能调优,集成测试没问题后就上线了,上线后也几乎没出现过性能问题。”其实没遇到性能问题不代表程序不存在性能问题,只能说明系统的访问量有点小。微博..._12306后端

技术人员考研英语2001年-2007_lay the root-程序员宅基地

文章浏览阅读758次。考研英语2001年-2007我遇到的单词总结20011.specification /ˌspesɪfɪˈkeɪʃn/n. 规格;说明书;详述accumulation /əˌkjuːmjəˈleɪʃn/n. 积聚,累积;堆积物affect /əˈfekt/vt. 影响;感染;感动;假装vi. 倾向;喜欢n. 情感;引起感情的因素publication /ˌpʌblɪ..._lay the root

推荐文章

热门文章

相关标签