静态编译Qt5.4.1和Qt WebKit

Ubuntu16下编译Qt4.8.3源码 Ubuntu下Qt4编译方法 编译的环境: Ubuntu16.04.7 GCC-4.9 Qt4.8.3 首先贴出Qt源码的下载地址https://download.qt.io/archive/qt/。这个网站相对国内的镜像站更全(镜像站似乎没有Qt4源码),但是缺点是比较慢,如果有梯子的话应该会更快。 下面就可以在本地计算机上进行编译相关的操作了,在这里我将下载好的源码放在$HOME/Downloads路径下。大家可以根据自己的实际情况进行相关的修改。 解压源码压缩包 这里可以使用系统自带的GUI解压工 阅读详情


图灵社区文章地址:http://www.ituring.com.cn/article/195148
WebKit是个好东西,做爬虫、显示网页还是想用HTML来做桌面应用的界面都可以用他,不过一直以来都觉得自己编译webkit费力不讨好,所以都是用的qt官方编译好的,至于静态编译webkit,我之前一直以为是根本不可能的。后来看qt forum上说其实是可以的,不过是因为开源协议的问题qt默认的静态编译只是把webkit给排除了,自己编译一下webkit就好了,既然如此,那我就当小白试一下。不过最后发现静态编译webkit其实也不难,就是比较麻烦,占用了几十个G的硬盘历时一天终于把这玩意编译完了。所以简单记一下编译的流程,方便大家。不过得提醒大家闭源项目静态链接qt和webkit是违反LGPL协议的,除非你把你的程序以GPL协议开源,要不就是违法的。

首先是乱七八糟的工具的安装
1.Python,我机器上本来就用py 2.7和3.3,不过编译的时候用的是2.7
2.Ruby,我装的是 2.2.1,官网上说需要ruby,不过编译的过程中我没发现有什么地方用到这玩意,而且在windows上装个ruby也不是太有用,各位可以先不装他,等编译的时候遇到问题再装也不迟,我就不去试到底需不需要了.....
3.Perl,webkit和OpenSSL的编译脚本就是perl写的,这个是铁定要用了
4.OpenGL ES SDK,我也不知道为什么要用到这玩意,我明明选的是-opengl desktop,估计是qt的一个bug
4.一个编译器,看你自己想用什么了,我用的是vs2013

这些都装好了之后就是加两个第三方的库,icu和OpenSSL,icu是编译webkit所必须的,OpenSSL不是必须的,前提是你不打算用webkit访问https的网站...
我一开始尝试自己编译icu,这货倒也不是太难编译,不过就是编译选项中没有任何方法能改成使用静态运行时的,要自己改config和makefile文件,我懒得动弹,就找了个现成的编译好的Precompiled ICU,不过用这里的icu有个问题,就是它提供的静态编译的icu库木有pdb调试信息,在链接的时候会有一堆LNK4099的warning,这傻逼warning虽然可以确定是完全人畜无害的(我们几乎没可能去调试icu里面的代码),但是因为VS有个操蛋的bug,这个wrning是无法屏蔽的,而因为QtCore也用到了icu,于是你每个qt项目都会看到一堆LNK4099的warning.....每次编译的时候...WTF...如果不想看到,就自己编译icu吧,这个链接也给了让icu静态链接运行时的patch,自己动手丰衣足食。
编译 OpenSSL我就不多说了,比较简单,我之前也写过http://www.godebug.org/index.php/archives/104/

都搞定之后,开始编译Qt,直接下载zip格式的源码,不要用tar的,里面缺少configure.exe,那是给linux用的,解压,我放在F:\qt-everywhere-opensource-src-5.4.1\,然后是修改mkspace中的配置文件,因为Qt也没有能从命令行修改为使用静态运行时的选项,找到qtbase\mkspace\编译器名\qmake.conf,编辑,把里面的两个MD都改成MT,一个MDd改成MTd就可以了,我这里用的是VS,gcc的话应该是把QMAKE_CXXFLAGS一项中加个-static,保存就可以了。
然后是设置环境变量,这里我建议直接屏蔽系统的环境变量,全部都重新设置,因为系统装安装的乱七八糟工具都有可能影响编译,比如说装了msysgit什么的,里面的perl.exe就会有影响。开个命令提示符CD到源码的根目录,

set PATH=C:\Windows;C:\Windows\System32;D:\Ruby22-x64\bin;C:\Python27;C:\Python27\Scripts;F:\icu\lib;F:\icu\bin;F:\gles_sdk\x86;D:\Perl64\bin;F:\openssl\bin;
set INCLUDE=F:\icu\include;F:\gles_sdk\include;F:\openssl\include;
set LIB=F:\icu\lib;F:\gles_sdk\x86;F:\openssl\lib;
"D:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat" x86

上面的路径请自行换成对应的目录。然后就可以configure了:

configure -prefix D:\Qt\Static541_2013 -debug-and-release -opensource -static -nomake examples -no-compile-examples -opengl desktop -openvg -platform win32-msvc2013 -target xp -sse4.2 -no-avx -no-avx2 -icu -openssl-linked

configure完直接nmake 然后nmake install,经过漫长的等待,没问题的话在D:\Qt\Static541_2013就可以看到编译好的lib了。
这时候静态版本的Qt已经编译好了,接下来就该搞webkit了。
编译完之后不要关闭命令提示符,接着执行以下几条命令:

set PATH=%PATH%D:\Qt\Static541_2013\bin;F:\qt-everywhere-opensource-src-5.4.1\gnuwin32\bin;
set INCLUDE=%INCLUDE%D:\Qt\Static541_2013\include;
set LIB=%LIB%D:\Qt\Static541_2013\lib;D:\Qt\Static541_2013\plugins;D:\Qt\Static541_2013\plugins\audio;D:\Qt\Static541_2013\plugins\bearer;D:\Qt\Static541_2013\plugins\designer;D:\Qt\Static541_2013\plugins\geoservices;D:\Qt\Static541_2013\plugins\iconengines;D:\Qt\Static541_2013\plugins\imageformats;D:\Qt\Static541_2013\plugins\mediaservice;D:\Qt\Static541_2013\plugins\platforms;D:\Qt\Static541_2013\plugins\playlistformats;D:\Qt\Static541_2013\plugins\position;D:\Qt\Static541_2013\plugins\printsupport;D:\Qt\Static541_2013\plugins\qml1tooling;D:\Qt\Static541_2013\plugins\qmltooling;D:\Qt\Static541_2013\plugins\sensorgestures;D:\Qt\Static541_2013\plugins\sensors;

最后那个set命令中的一大堆plugin的lib目录应该是不用加的,qmake会自己找到这些lib,但是我没测试过(也不想去试),谁有兴趣可以试试..然后就是编译webkit了..

perl F:\qt-everywhere-opensource-src-5.4.1\qtwebkit\Tools\Scripts\build-webkit --qt --prefix=d:\Qt\QtWebkit

这里的prefix好像加和不加都一个样,反正编译完都会自动把生成的lib给放到Qt SDK的目录下,这个prefix指定的目录却什么也没有。炒鸡漫长的等待..看机器性能,我反正是编译了大约5、6个小时,期间机器卡的不行,就只能看个网页或者电子书。
编译还算顺利,只遇到了一个错误,原因是没有判断是否是静态编译,用了dllimport:
f1.png

打开F:\qt-everywhere-opensource-src-5.4.1\qtwebkit\Source\WebCore\platform\qt\QtTestSupport.h,把

#if defined(BUILDING_WEBKIT)
#define TESTSUPPORT_EXPORT Q_DECL_EXPORT
#else
#define TESTSUPPORT_EXPORT Q_DECL_IMPORT
#endif

改成:

#if defined(BUILDING_WEBKIT)
#define TESTSUPPORT_EXPORT /*Q_DECL_EXPORT*/
#else
#define TESTSUPPORT_EXPORT /*Q_DECL_IMPORT*/
#endif

重新运行上面的编译命令,一路顺畅,终于编译完了...编译完成后他会自动把qtwebkit的lib拷贝到你的qt sdk所在的目录,接下来就是配置qt creator或者qt vs plugin了,没什么好说的了

我试着编译了一下qt example中的browser项目,得到了一个51.1mb的exe,upx -9一下就成了16.6m,除了我手残编译qt的时候忘了加openssl所以不能访问https的网站之外功能没有缺失(上面教程是按照加了openssl来写的),我也懒得再编译了,有空再说吧。

另外根据我编译qt得出的经验,一般Qt5.X.0编译都或多或少有各种问题,要么语法问题,要么少东西,要么路径不对,但是过不久会放出一个5.X.1和5.X.2就一般没什么问题了,为什么会这样就不知道了。

使用vs的命令行工具静态编译Qt4.8.5 一、下载Qt4.8.5的源码: 下载地址http://iso.mirrors.ustc.edu.cn/qtproject/archive/qt/4.8/4.8.5/qt-everywhere-opensource-src-4.8.5.zip 二、解压Qt源码将其放在合适的目录下 ** 三、安装你想要使用的vs的版本(确保Qt能被编译为相应的能在vs中使用的版本) 四、修改源码中的文件 a.删除源码... 阅读详情

相关推荐

Qt 5.14.2 aarch64 静态交叉编译实战指南

静态链接是嵌入式 Linux 图形应用交付的核心要求,尤其在国产 ARM64(如飞腾、RK3399、Jetson)平台中,需规避动态依赖、版本冲突与运行时崩溃。其本质是构建一个自包含的二进制,依赖于匹配的 musl 工具链、内核头文件及第三方静态库(libudev、sqlite3、freetype 等)。Qt 5.14.2 因官方完整支持 aarch64 静态构建且兼容信创环境,成为工业边缘设备 GUI 开发的关键 LTS 版本。本文聚焦从零搭建可复现的离线编译体系,覆盖工具链定制、第三方依赖静态化、Qt

weixin_34265814的博客 1572

QT5.4.2静态编译(包含QtWebKit),在VS2013上创建项目,并成功运行

Qt项目发布的exe程序,默认是以动态链接形式的,这样发布后的程序会附带好多Qt自己的dll库,这样文件数量不仅多,而且移植到其他电脑上的时候,还可能会遇到,提示缺其他库等各种运行不起来的情况。当然办法还是有的,找到所有用到的库一块随着exe发布就可以了。其实还有一种方法就是用静态编译发布程序。 下面是静态编译的流程。 文件准备 ...

weixin_30613727的博客 431

编译QtWebkit:在Qt中独立编译QtWebkit

在使用QtWebkit时,请确保您的应用程序不会受到已知的安全漏洞的影响,并尽量考虑迁移到QtWebEngine或其他现代的Web浏览器解决方案。现在,您可以在Qt应用程序中使用QtWebkit了。Qt 5.6或更早版本:由于QtWebkit已在Qt 5.6之后的版本中被弃用,因此我们需要使用Qt 5.6或更早版本的Qt。然后,您可以在代码中包含QtWebkit的头文件,并使用QtWebkit的类和功能。在上面的示例中,我们创建了一个简单的Qt应用程序,使用QWebView类在窗口中显示一个Web页面。

FucMobile的博客 1401

VS2015静态编译Qt5.5.1(包括Qtwebkit)

VS2015静态编译Qt5.5.1(包括Qtwebkit) kingbhy 2018.04.12 20:06* 字数 859 项目中需要用到webkit,调研了webkit源码,但是源码比较庞大,用xcode编译很方便,但是本人不熟悉mac下编程,所以研究了一段时间之后只能作罢。后来了解到Qtwebkit做了不少精简的工作,而且qt对跨平台比较友好,所以转而研究Qtwebkit。研究第一步是...

我的博客 1592

Visual Studio 2015编译安装配置QT5.5.1(含QTWEBKIT) 使用的编译脚本

Visual Studio 2015编译安装配置QT5.5.1(含QTWEBKIT)使用的编译脚本,具体使用方法参见博文《 Visual Studio 2015编译安装配置QT5.5.1(含QTWEBKIT)》,链接地址:http://blog.csdn.net/liuyez123/article/details/50339865

UG/NX二次开发实战:用Python脚本批量更新100个零件参数,解放你的双手

本文详细介绍了如何利用NXOpen Python API进行UG/NX二次开发,实现批量更新100个零件参数的自动化流程。通过环境配置、框架设计、核心代码实现及性能优化,帮助工程师高效完成参数化设计任务,显著提升工作效率。

weixin_28694169的博客 276

QT5.4.2静态编译(包含QtWebKit)及配置方法

QT5.4.2静态编译(包含QtWebKit),在VS2013上创建项目,并成功运行        Qt项目发布的exe程序,默认是以动态链接形式的,这样发布后的程序会附带好多Qt自己的dll库,这样文件数量不仅多,而且移植到其他电脑上的时候,还可能会遇到,提示缺其他库等各种运行不起来的情况。当然办法还是有的,找到所有用到的库一块随着exe发布就可以了。其实还有一种方法就是用静态编译发布程序。

一码算一码 6163

OpenCV实战:高效检测与识别多类型条码与二维码

本文详细介绍了如何利用OpenCV的BarcodeDetector和QRCodeDetector模块,高效实现EAN-13条形码与常见二维码的检测与识别。内容涵盖从环境搭建、单码识别到处理多二维码的完整流程,并分享了提升识别率的图像预处理与性能优化等实战技巧,帮助开发者一站式解决视觉项目中的条码识别需求。

weixin_29094539的博客 493

Qt 5.6.2 静态编译(VS2013 x86 target xp openssl icu webkit)

在去年4月份的时候,我写过一篇动态编译Qt5.6.0的文章,当时是为了解决webkit不能在winxp下面跑的问题,动态编译有一个缺点,就是发布的时候,要携带一大堆dll,使安装包的体积增大。而静态编译能够解决这个问题,但是静态编译也有缺点,那就是编译时间很长,而且每次不管哪个模块有改动,就必须重新编译链接整个项目。现在Qt最新版本已经到5.8.0RC了,但5.6.2应该是最后一个支持xp的版本了

RexLeee 4573

手把手教你排查Abaqus中的Johnson-Cook损伤参数:避免因d3正负号导致的仿真失败

本文详细解析了Abaqus中Johnson-Cook损伤参数d3正负号设置的关键问题,帮助用户避免因参数错误导致的仿真失败和Excessive distortion报错。通过对比不同文献定义、提供实操指南和典型错误排查流程,有效提升非线性分析的准确性和效率。

weixin_33960567的博客 354

Dify智能体开发:Dify文件上传

相较于聊天文本,文档文件能够承载大量的信息,例如学术报告、法律合同。受限于 LLM 自身仅能够支持文件或图片,难以获取文件内更加丰富的上下文信息,应用的使用者不得不手动复制粘贴大量信息与 LLM 对话,增加了许多不必要的使用成本。

王国平的博客 2590

Windows下Qt静态编译全解

Windows下Qt静态编译全解 (2012-04-16 16:59:05) 转载▼ 标签: 杂谈 分类: QT Windows下Qt静态编译全解(2010-09-08 13:42) 分类:QT 编译准备 下载NOKIA网站上的QT SDK,解压或安装到相关目录。 本文以QT 4.6.2为例,下载地址:http://get.qt.nokia...

我的博客 3755

PyCharm配置SSH远程解释器第3步时弹框报错:com.google.gson.stream.MalformedJsonException: Expected value at l...如何解决?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值 。

**My Coding Family** 1928

(亲测)WIN7+VS2010+QT4.8.1+静态编译 (可以百度网盘下载QT4.8.5 x64编译结果)

前言:    先说一些废话,本文成形,参考了大量的网上资料。对此十分感谢。附上一此网址:   http://www.cnblogs.com/elect-fans/archive/2012/03/29/2422816.html   一、下载源码并解压 从QT官网http://qt.nokia.com/ 下载最新的QT源码包,我下载的是4.8.1的版本。文件名为“qt-e

chenkent888的专栏 4584

一个人干完整个运营团队!浙大开源「Easel」全链路拆解:从热点发现到自动发布,一个 Agent 直接做出来

一个人干完整个运营团队?浙大 REAL 实验室开源的 Easel,把 OpenClaw Agent、账号画像、114 个内容技能和真实媒体工具接在一起:从热点发现、选题策划、图文视频创作,到七平台适配发布、数据归因复盘,全链路一个 Agent 闭环完成,产物按项目归档。本文完整拆解其五层工作流、四层 Prompt Stack 架构、画像内联机制、Skill 三层加载与产物契约,附安装部署、.env 关键配置、Embedding 避坑、已知问题修复等实战干货,全程无虚构、可复现。

program哲学 284

AutoSAR_BSW高阶 7. Signal Group 信号组

Autosar BSW的高级配置是实现复杂汽车电子系统的关键步骤之一。通过合理配置信号组和使用适当的参数,您可以提高系统性能,确保数据的可靠传输。在本博客中,我们深入探讨了信号组的概念和高级配置参数,并提供了示例代码,希望这些信息能够帮助您更好地理解和应用Autosar BSW的高级配置。如果您在配置过程中遇到任何问题,不妨寻求专业支持,以确保您的汽车电子系统能够顺利运行。Autosar COM 模块是一个广泛应用于汽车行业的关键技术,它使不同的电子控制单元能够有效地通信和协作。

一直在水些技术小文 662

QT5静态编译教程,主要针对vs2012

— 本帖被 XChinux 设置为精华(2013-03-24) — QT5,VS2012静态编译,所有的库准备充分的话qwebkit也可以静态编译通过,但是我编译的版本使用中如果用了QWEBVIEW控件在连接时会出错。 注:我自己编译的环境是:win server 2012 dc版 , vs2012 with update1,qt-everywhere-opensource-src-5.0.2,...

我的博客 1004

分区补光与ISP图像调节技术

在安防监控场景中,逆光、强光、明暗不均(如门口 / 窗边的 “阴阳脸” 画面)是导致图像细节丢失的核心问题。分区补光技术通过对画面不同亮度区域精准补光,解决 “局部过曝 / 欠曝” 难题;ISP(图像信号处理器)图像调节技术则通过算法优化,提升画面色彩、对比度与细节。二者协同可实现 “硬件补光 + 算法优化” 的双重增强,是低功耗摄像机实现高清画质的关键技术组合。分区补光与 ISP 图像调节技术:原理、协同方案及安防监控应用案例。一、核心技术原理解析。

AIoT深度探索者 | 嵌入式系统架构师 深耕物联网(IoT)与人工智能(AI)融合技术,聚焦​​边缘计算、图像开发、低功耗通信协议​​,致力于智能硬件,关注我获取最新技术文章信息与海量资源~ 730

compile WebKit in qt5.6(unfinished)

2017.10.10 thinking:why not just use qt5.5 and i don't need to study this stuff? maybe leader need to give me something to learn.and give me some works . https://forum.qt.

hunter 576

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Qt5.14.2 aarch64静态交叉编译实战指南

静态交叉编译是嵌入式Linux系统实现零依赖部署、提升安全性和可移植性的关键技术。其核心原理是在宿主机(如x86_64 Ubuntu)上,利用目标平台(aarch64)专用工具链,将应用程序及其全部依赖(如zlib、OpenSSL、freetype等)链接为不依赖外部动态库的独立二进制文件。该技术显著降低运行时风险,满足工业HMI、国产化替代(麒麟/UOS)、资源受限设备(内存<512MB)等严苛场景需求。Qt5.14.2作为LTS长期支持版本,结合aarch64架构与静态交叉编译能力,成为ARM嵌入式GU

weixin_34268843的博客 366

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

QT 4.8 静态库编译方法

原文地址:http://www.uzzf.com/news/2131.html 经验证,确实能用,感谢作者! 特别请注意红色字体,那是关键部分  最初踏上QT之路是受到了XiaomaGee的指点,相比于常规的窗口程序开发,QT有着以下特点:   1、 优良的跨平台特性(支持Win、Linux、Mac 不同的平台下只需重新编译即可使用)   2、 面向对象   3

1016

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

LIBVLC+QT+Webkit开发应用

需求概述:

2373

在qt 5.14.2中使用webkit

在qt 5.6以后的版本中,官方移除了qtwebkit组件,下面是在qt 5.14.2中使用最新版webkit的配置过程记录。 1.获取最新版的qtwebkit https://github.com/qtwebkit/qtwebkit/releases这里有最新版的qtwebkit下载,根据自己的编译器下载对应的压缩包,我的机器用的是mingw73 ,操作系统是win7,所以下载qtwebkit-Windows-Windows_7-Mingw73-Windows-Windows_7-X86.7z就...

程序员记事本 1万+

qt的webkit

qt4里面,在pro文件添加 QT += webkit   qt5里面,在pro文件添加 QT += webkit webkitwidgets     备注:   webkit不支持静态编译

weixin_34332905的博客 175

QT出静态版本

值“MT_StaticRelease”不匹配值“MD_DynamicRelease” 解决: 在工程上右键-》属性-》c/c++-》代码生成-》运行库 改成(release为MT,debug为MTD),如果有多个工程(主工程中包含动态或者静态链接库工程)都得同样设置。即可解决! QT总是出现无法解析外部符号 添加新文件或者改动,需要先 qmake下 qt添...

promanz的博客 991
上一篇: 关于Qt5 WA_TranslucentBackground not displayed
下一篇: 《Windows核心编程》---Windows服务
zdpyly21
博客等级 码龄12年 2粉丝 5原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值