Qt库的静态编译
一、准备软件
1. MinGW (C:\Qt\MinGW)
http://pan.baidu.com/share/link?shareid=174269&uk=673227135
这个文件解压就可以用了。
2. ActivePerl
3. qt-win-opensource-4.8.4-mingw.exe (C:\Qt\4.8.4)
4. qtcreator2.6x
二、安装软件
1. qt-win-opensource-4.8.4-mingw.exe,提示MinGW路径时,指定到正确位置(C:\Qt\MinGW)
2. 安装Perl环境,一路Next即可
3. 安装QtCreator
三、标准库编译
1. 配置编译选项
1)打开C:\Qt\4.8.4\mkspecs\win32-g++\qmake.conf
(建议先备份一下)
在QMAKE_LFLAGS后面加上 -static
并将QMAKE_LFLAGS_DLL后面的 -shared 改为 -static
(注:如果用Qt4.8.3版本,
修改QT 4.8.3安装目录下mkspecs\win32-g++\qmake.CONF文件,在qmake.CONF文件中QMAKE_IDC = $$[QT_INSTALL_BINS]$${DIR_SEPARATOR}idc.exe
之后一行添加:QMAKE_RCC = $$[QT_INSTALL_BINS]$${DIR_SEPARATOR}rcc.exe
否则,工程中有qrc文件时,会出错。4.8.4版本没有此问题)
保存并关闭
2)将C:\Qt\4.8.4\bin 下的syncqt与syncqt.bat 这两个文件删除或改名
否则在编译时会提示找不到perl环境
3)修改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));
如不修改将出现编译Webkit 时会出现 U1077错误。
2. 开始编译
静态编译,只要release版本就够了。debug版,静态编译就没有必要了,debug版随便一个工程,生成的执行文件都要上百兆甚至几百兆,调试时,很慢。那么release静态版和debug动态版如何共存呢?稍后再介绍。
打开Qt 4.8.4 Command Prompt软件,输入
configure -confirm-license -opensource -platform win32-g++ -release -static -ltcg -no-qt3support -fast -exceptions -accessibility -rtti -stl -qt-sql-sqlite -qt-sql-odbc -qt-zlib -qt-libpng -qt-libtiff -qt-libjpeg -qt-libmng -multimedia -audio-backend -script -scripttools -nomake demos -nomake examples -nomake docs -qt-style-windows -qt-style-windowsxp -qt-style-windowsvista -qt-style-plastique -qt-style-cleanlooks -qt-style-motif -qt-style-cde -plugin-sql-sqlite -plugin-sql-odbc
configure参数很多,可以参考它的帮助,按自己需要增减参数。
PS:这个配置仅编译release版本,如果需要同时需要静态版的Debug版本,需要把-release 改为 -debug-and-release
耐心等待一会,直到提示:
Qt is now configured for building. Just run mingw32-make.
To reconfigure, run mingw32-make confclean and configure.
接着输入 mingw32-make
等编译结束,如果没有什么error fail的提示,就恭喜你成功啦!
四、配置QT Creator
打开QT Creator, 菜单Tools==》Option==》Build&Run==》
Compiler选项卡:
如果没有自动检测到,手工点Add按钮,选MinGW,名称就叫MinGW吧,Compiler path:C:\Qt\MinGW\bin\g++.exe
点击Apply
Qt Versions选项卡:
点Add按钮,选择C:\Qt\4.8.4\bin\qmake.exe,
version name: Qt4.8.4(4.8.4)
点击Apply
Kits选项卡:
点Add按钮,name: qtstatic_rel
Device type: Desktop
Compiler: MinGW
Debuger: release版本无所谓,在debug版一定要正确选择,否则无法调试
Qt version: Qt4.8.4(4.8.4)OK,至此,就可以编译静态的qt程序了,生成的exe文件可以独立运行。不过生成的exe文件体积比较大,可以用upx压缩一下,会缩小到原来的40%左右。
附一份vs2010 编译64Bit静态库 简明过程
1.下载源码 qt-everywhere-opensource-src
2.调用vs2010命令行 Visual Studio x64 Win64 命令提示(2010)
3.切换到解压目录,运行configure -static -release -no-qt3support -platform win32-msvc2010 -qt-sql-psql -qt-sql-sqlite
4.jom.exe -j N N代表核数
5.漫长等待,编译完成
Qt库的静态编译的更多相关文章
- Qt4编译生成VS静态库(静态编译),有三个bat文件 good
开发环境:vs2008+Qt4.8.4源码库 其他环境请自己尝试,原理应该是差不多的 Qt编译生成静态库 1. 本教程只针对在win32平台,使用VS开发工具(例子以VS2008为例) ...
- Linux之Qt利用Sqlite静态编译库(转)
参考:http://www.linuxidc.com/Linux/2011-11/47465.htm sqlite3编译安装 ------------------------arm版--------- ...
- QT + openssl + VS2015静态编译
从http://slproweb.com/products/Win32OpenSSL.html下载已经编译好的openssl,一路next 我将OpenSSL-Win32\lib\VC目录下的libe ...
- VS2010使用静态编译的qt库(Qt 5)
Qt 5引入了一种新的编写方式. Qt开发界面很方便,但发布程序就不那么方便了,你的把引用到的dll一起发布才行,要是能静态编译就好了,发布的时候只有一个exe多方便. 虽然以前为了方便,直接安装的q ...
- VS2010使用静态编译的qt库
Qt开发界面很方便,但发布程序就不那么方便了,你的把引用到的dll一起发布才行,要是能静态编译就好了,发布的时候只有一个exe多方便. 虽然以前为了方便,直接安装的qt-windows-opensou ...
- QT 4.8 静态库编译方法
最最初踏上QT之路是受到了XiaomaGee的指点,相比于常规的窗口程序开发,QT有着以下特点: 1. 优良的跨平台特性(支持Win.Linux.Mac 不同的平台下只需重新编译即可使用) 2. 面向 ...
- [转]QT 4.8 静态库编译方法
最最初踏上QT之路是受到了XiaomaGee的指点,相比于常规的窗口程序开发,QT有着以下特点: 1. 优良的跨平台特性(支持Win.Linux.Mac 不同的平台下只需重新编译即可使用) 2. 面向 ...
- 静态编译Qt5.4.1和Qt WebKit
图灵社区文章地址:http://www.ituring.com.cn/article/195148WebKit是个好东西,做爬虫.显示网页还是想用HTML来做桌面应用的界面都可以用他,不过一直以来都觉 ...
- Linux下静态编译Qt
Qt采用编译的方式安装的时候,配置中默认的编译方式是动态编译的,但是有时候你编写的程序要发布出去,带很多动态库文件是很繁琐的,此时就需要静态编译你的程序,Qt要实现静态编译必须库文件也是静态编译的,所 ...
随机推荐
- 关于MapReduce单词统计的例子:
要统计的文件的文件名为hello hello中的内容如下 hello you hello me 通过MapReduce程序统计出文件中的各个单词出现了几次.(两个单词之间通过tab键进行的分割) im ...
- MSP430常见问题之通信类
Q1: 430 串口中,有个R/D 控制线,在接收上位机的数据,但本身的数据有无发送完毕不知道啊,什么时候才可置低R/d 位来接收数据啊?好像430 没有发送完中断标志A1:字节主动发送,一般都能发出 ...
- 【XMLRPC实现跨语言编程】Tcl <----> python
转载请声明出处,谢谢合作. # 期望一种能实现tcl.python两者解释器能双向通讯的结合体# py->tcl: from Tkinter import Tcl; tcl = Tcl(); t ...
- ubuntu qt :-1: error cannot find lgl
安装package "libgl1-mesa-dev": sudo apt-get install libgl1-mesa-dev 参考文献: Qt: can't find -lG ...
- 让footer固定在页面(视口)底部(CSS-Sticky-Footer)
让footer固定在页面(视口)底部(CSS-Sticky-Footer) 这是一个让网站footer固定在浏览器(页面内容小于浏览器高度时)/页面底部的技巧.由HTML和CSS实现,没有令人讨厌的h ...
- IT技术开发人员35岁之前应该做的十件事
第一,学会本行业所需要的一切知识并有所发展.已故零件大王布鲁丹在他35岁时,已经成为零件行业的领袖,并且组建了年收入达千万美元的海湾与西部工业公司.每个人在年轻时都可能有过彻夜不眠.刻苦攻读,这在20 ...
- [Entity Framework] MySQL @ Entity Framework 6
原文 [Entity Framework] MySQL @ Entity Framework 6 要让MySQL能够用EF6,我花了一点时间,在此记录一下 安装元件 在设定档加入Provider 安装 ...
- 一个简单的Redis结合Spring MVC架构以及实现过程
为了加快开发人员对公司项目的理解.更加容易入手和对公司项目的整体把控. 整体框架 首先介绍公司项目的整体框架,闲话少说,直接上图 整体性能分析 这就是公司的一个整体的架构,为了开发人员对架构的侧重点的 ...
- UMeng 友盟的用户数,启动数 等
最近一哥们研究UMeng 友盟的用户数,启动数,设备和位置相关数据,发现真的可以模拟啊. 支持Android,IOS,WPhone平台,同时可以实现每小时按10万级的速度增加,启动次数也是可以按10万 ...
- Kill Session
有时候创建索引或修改表字段时,会提示资源正忙,可以查出表对应的进程并kill掉 select l.session_id,o.owner,o.object_name from v$locked_obje ...