关于编译Qt以及驱动的一点总结吧

本文涉及的产品
RDS AI 助手,专业版
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
简介:

通过这几次的折腾,对编译Qt算是有一点的心得吧:

    首先我们编译QT的时候需要面对的是下载源代码,一般情况下我们建议下载qt-everywhere-opensource-src-4.8.2.zip这种形式的源代码。这样编译起来的问题也就很少了。当然如果人品不行的话,还是会出现很多的问题的。

    其次是选择动态编译还是静态编译,默认是动态的,我之前一直打算采用静态编译的,这样分发程序的时候很简单,但是在静态编译的时候出现许多的问题,导致我来来回回编译了几次。

    关于静态编译请参看:这篇文章 文章中是使用vs2010编译的Qt4.8.0版本。如果你刚好也是在windows下面打算采用vs进行编译,这篇文章很不错,但是有一些许多注意的问题。

  •     qt的安装路径,以及以后使用vs建立qt项目的时候,不能有中文,路径中也不能有空格,比如program files之类的路径也是不行的。
  •     删除源码包中bin目录下的syncqt和syncqt.dat文件,如你不放心可将其改名或剪切到别的位置。如不修改将发生 Perl not found in environment - cannot run syncqt 错误。
  •     一定要修改\mkspecs\win32-msvc2010下的qmake.conf文件,将其中的
    QMAKE_CFLAGS=-nologo -Zm200 -Zc:wchar_t-改成QMAKE_CFLAGS=-nologo -Zm200 -Zc:wchar_t
    注意末尾的”-“号区别。如不修改将来如有项目使用wchar_t,qt却编译成wchar_t-,编译会导致连接错误,提示找不到Qwstring;
  •     关于是否需要修改\mkspecs\win32-msvc2010下的qmake.conf文件中的QMAKE_CFLAGS_RELEASE,QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO,QMAKE_CFLAGS_DEBUG这3处后面的MD,MDd,取决你打算动态还是静态编译,如果是静态编译的话,改为:MT,MTd(最后还要在vs2010中的项目属性中将MD改为MT)。如果是动态编译的话,不要改。
  •     一定要修改src\3rdparty\webkit\Source\WebCore\platform下的DefaultLocalizationStrategy.cpp,定位到327行,将本行替换成return WEB_UI_STRING("Look Up \"<selection>\"", "Look Up context menu item with selected word").replace("<selection>", truncatedStringForLookupMenuItem(selectedString));(由于word自动排版问题,请各位直接将以上英文部分一次性全复制,其实它们是一行,不要分行复制)。如果你仔细看原来的那行的话,你会发现双引号是错误的,如不修改将出现编译Webkit 时会出现 U1077错误。
  •     关于configure参数的说明,可以到时候输入configure -help自行查看,或者去官网。
  •     编译的时候建议使用-debug-and-release,如果只是单纯的编译debug或者release的时候,可能会出现一些问题。尤其是很容易出现debug调用release的东西或者相反,这种东西很烦人的,所以建议都变异,占用不了多大的空间。
  •     使用-nomake demos -nomake examples -nomake docs选项将加速编译过程,建议在编译qt源码的时候都在configure参数中加上这些,也就是不编译demos和docs和examples文件夹下面的东西,我知道这些是很好的例子,但是我的意思是在你不能确保自己能够一次性编译成功Qt的情况下,加上这些参数,能够为你节省大量的时间,因为万一编译错误的话,你又得重新来编译了。如果你日后想编译demos或者examples的时候,去demos或者examples的目录下,qmake dems.pro或者qmake examples.pro然后nmake就行了。
  • 使用-mp选项可以加速,适合多核用户提高编译速度
  • 千万不要在nmake之后,执行nmake clean,nmake confclean。别相信网上说的那些什么先备份在删除的,再说这些东西占用不了几个空间的。

 

下面说说编译Qt的mysql,oracle驱动吧。安装好oracle或者mysql之后,命令很简单,对于Mysql执行下面的命令(注意修改自己的路径名,最好别有中文和空格):

首先cd到  D:\qt\src\plugins\sqldrivers\mysql
然后qmake INCLUDEPATH+= "D:\phpdev\mysql\include"  LIBS+= "D:\phpdev\mysql\lib\libMySQL.lib"  MySQL.pro
最后nmake

  然后在你的D:\qt\plugins\sqldrivers(注意对应你的安装路径)会有8个文件。

对于oracle的话,基本差不多,命令如下:

1
2
3
4
5
set INCLUDE=%INCLUDE%;D:\app\rollen\product\11.2.0\client_1\oci\include
set LIB=%LIB%;D:\app\rollen\product\11.2.0\client_1\oci\lib\msvc
cd %QTDIR%\src\plugins\sqldrivers\oci
qmake oci.pro
nmake

也会产生8个文件。如图(由于我的博客模板的问题,图片部分没有显示,其中mysql的文件8个,oracle的8个):大家可以右键,在新标签页查看图片。

然后剩下的就是配置vs2010了,强烈推荐同时配置Vassist。

关于如何配置vs和VAssist的话网上有很多教程,我就不给百度和google这些公司制造去重复的负担了,呵呵。

笔者之前静态编译N次,都遇到了错误,最后没办法,采用动态编译,一次性成功,哈哈。

另外关于mysql和oracle11g的qt驱动,需要的朋友给我邮件,或者评论。

 参考资料:

(原创)亲测VS2010纯静态编译QT4.8.0,实现VS2010编译调试Qt程序,QtCreator静态发布程序

VS2008 环境中完美搭建 Qt 4.7.4 静态编译的调试与发布

文章跟新

  许多朋友还是不会编译Qt,其实吧,我觉的动态编译没什么不好,而且基本都是一次性成功的。为什么非得搞静态编译。

  另外,许多朋友询问驱动的事情,所以我上传编译好之后的驱动到我的新浪微盘。下载地址:http://vdisk.weibo.com/s/a9JGt

       编译环境:vs2010+Oracle11g/mysql/lited4.。。

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
目录
相关文章
|
数据采集 存储 人工智能
2022云栖精选—云上电力信息数据采集与处理
摘要:本文整理自阿里云电力行业高级解决方案架构师姜洺,在云栖大会的分享。本篇内容主要分为三个部分: 1. 新型电力系统下数据处理上云需求 2. 云上电力信息数据处理核心技术和实践 3. 电力信息数据处理上云核心优势
2022云栖精选—云上电力信息数据采集与处理
|
iOS开发 MacOS 智能硬件
如何搭建远程控制家中设备的Home Assistant智能家居系统【内网穿透】(下)
如何搭建远程控制家中设备的Home Assistant智能家居系统【内网穿透】
879 0
|
存储 监控 安全
【Elasticsearch专栏 11】深入探索:Elasticsearch如何支持多租户架构
Elasticsearch支持多租户架构主要通过索引隔离、集群隔离和基于路由的隔离。通过为每个租户创建独立索引或配置路由规则,实现数据隔离。同时,利用基于角色的访问控制机制进行权限管理,确保租户数据安全。这些策略提供了灵活且安全的多租户支持。
741 5
|
安全 Android开发 iOS开发
安卓与iOS的较量:技术深度对比
【10月更文挑战第18天】 在智能手机操作系统领域,安卓和iOS无疑是两大巨头。本文将深入探讨这两种系统的技术特点、优势以及它们之间的主要差异,帮助读者更好地理解这两个平台的独特之处。
561 0
|
数据采集 传感器 机器学习/深度学习
人工智能在农业中的应用:从数据采集到智能决策
本篇文章将详细探讨人工智能(AI)技术在现代农业中的应用,包括从数据采集、分析到智能决策的全过程。通过具体案例,展示AI如何帮助提高农业生产效率、降低成本并增强环境可持续性。
2083 0
|
存储 运维 分布式计算
用马斯克五步工作法重构支付宝商家账单
支付宝中国数据团队在过去的一年里应用马斯克的五步工作法重构了有 10 年历史之久的支付宝商家账单,整体复杂度减少 60%,时效性提升 1 小时,计存成本降低 30%,理解和运维成本大幅下降。复杂度是很多问题的根源,既会增加运维的成本,又降低了支撑业务的效率。账单重构的经验表明,相当大比例的复杂度是没有必要的,我们应该致力于把复杂的事情变简单,而不是倒过来做“防御性编程”。希望本文对想要降低系统复杂度的同学或者项目有所帮助。
446 5
用马斯克五步工作法重构支付宝商家账单
|
Android开发
Android Studio入门之常用布局的讲解以及实战(附源码 超详细必看)(包括线性布局、权重布局、相对布局、网格布局、滚动视图 )
Android Studio入门之常用布局的讲解以及实战(附源码 超详细必看)(包括线性布局、权重布局、相对布局、网格布局、滚动视图 )
1074 0
|
机器学习/深度学习 存储 数据可视化
【AAAI2024】M2SD:通过特征空间预构建策略重塑小样本类增量学习
小样本类增量学习代表了机器学习领域中一个高度挑战性的议题,其核心目标在于能够在仅有限的数据支持下识别新类别,同时保留对已学习类别的认知,而无须重新训练整个模型。这一目标在模型需适应新类别的同时使用有限训练数据的情况下尤为艰巨。针对上述挑战,我们提出了一种创新性策略,称为多重混合自蒸馏。旨在为类增量学习阶段准备一个具有高度可扩展性和包容性的特征空间。
|
存储 编解码 JSON
解决浏览器存储问题,不得不了解的cookie、localStorage和sessionStorage
该文章详细对比了浏览器存储机制中的cookie、localStorage和sessionStorage的不同之处,以及各自的适用场景。
|
域名解析 网络协议 安全
【域名解析DNS专栏】DNS-over-TLS与DNS-over-HTTPS:安全升级新标准
【5月更文挑战第26天】随着网络技术的发展,DNS协议面临安全挑战,DNS-over-TLS (DoT) 和 DNS-over-HTTPS (DoH) 作为解决方案出现,旨在通过加密增强隐私和安全。DoT使用TLS封装DNS查询,防止流量被窥探或篡改;DoH则利用HTTPS隐藏DNS查询。实施DoT需在客户端和服务器间建立TLS连接,DoH需DNS服务器支持HTTPS接口。这两种技术为网络安全提供支持,未来有望更广泛部署,提升网络环境的安全性。
1902 0