一、准备软件
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库的静态编译的更多相关文章

  1. Qt4编译生成VS静态库(静态编译),有三个bat文件 good

    开发环境:vs2008+Qt4.8.4源码库 其他环境请自己尝试,原理应该是差不多的 Qt编译生成静态库 1.         本教程只针对在win32平台,使用VS开发工具(例子以VS2008为例) ...

  2. Linux之Qt利用Sqlite静态编译库(转)

    参考:http://www.linuxidc.com/Linux/2011-11/47465.htm sqlite3编译安装 ------------------------arm版--------- ...

  3. QT + openssl + VS2015静态编译

    从http://slproweb.com/products/Win32OpenSSL.html下载已经编译好的openssl,一路next 我将OpenSSL-Win32\lib\VC目录下的libe ...

  4. VS2010使用静态编译的qt库(Qt 5)

    Qt 5引入了一种新的编写方式. Qt开发界面很方便,但发布程序就不那么方便了,你的把引用到的dll一起发布才行,要是能静态编译就好了,发布的时候只有一个exe多方便. 虽然以前为了方便,直接安装的q ...

  5. VS2010使用静态编译的qt库

    Qt开发界面很方便,但发布程序就不那么方便了,你的把引用到的dll一起发布才行,要是能静态编译就好了,发布的时候只有一个exe多方便. 虽然以前为了方便,直接安装的qt-windows-opensou ...

  6. QT 4.8 静态库编译方法

    最最初踏上QT之路是受到了XiaomaGee的指点,相比于常规的窗口程序开发,QT有着以下特点: 1. 优良的跨平台特性(支持Win.Linux.Mac 不同的平台下只需重新编译即可使用) 2. 面向 ...

  7. [转]QT 4.8 静态库编译方法

    最最初踏上QT之路是受到了XiaomaGee的指点,相比于常规的窗口程序开发,QT有着以下特点: 1. 优良的跨平台特性(支持Win.Linux.Mac 不同的平台下只需重新编译即可使用) 2. 面向 ...

  8. 静态编译Qt5.4.1和Qt WebKit

    图灵社区文章地址:http://www.ituring.com.cn/article/195148WebKit是个好东西,做爬虫.显示网页还是想用HTML来做桌面应用的界面都可以用他,不过一直以来都觉 ...

  9. Linux下静态编译Qt

    Qt采用编译的方式安装的时候,配置中默认的编译方式是动态编译的,但是有时候你编写的程序要发布出去,带很多动态库文件是很繁琐的,此时就需要静态编译你的程序,Qt要实现静态编译必须库文件也是静态编译的,所 ...

随机推荐

  1. poj 3177 边连通分量

    思路: dfs求出所有点的low值,然后对每个连通分量进行缩点,可以通过low来进行缩点.虽然在同一连通分量里可能存在不同的low值,但这并不影响缩点.将每个连通分量缩为一个点后,只要求出这个缩点后的 ...

  2. C#中泛型容器Stack<T>

    我以前都是学出c,c++,这个学期开始学c#有点不适应,在编程中遇到些问题,所以自己在网上查了些资料,翻了一下书,写一些总结. 关于c#中Stack<T>泛型容器: <1>st ...

  3. Lombok(1.14.8) - @SneakyThrows

    @SneakyThrows @SneakyThrows,声明异常. package com.huey.lombok; import java.io.UnsupportedEncodingExcepti ...

  4. Java之日期和时间的计算

    学习是一个循序渐进的过程,不知道你们有没有这样的感受:有很多学习过的知识在很久没有温习之后就不知不觉地还给老师了.所以最近总结,把那些还给老师的再找回来. 运行图: 时间戳: 运行效果图: 时间日期的 ...

  5. web安全实战

    前言 本章将主要介绍使用Node.js开发web应用可能面临的安全问题,读者通过阅读本章可以了解web安全的基本概念,并且通过各种防御措施抵御一些常规的恶意攻击,搭建一个安全的web站点. 在学习本章 ...

  6. Swift结构体与类

    在面向过程的编程语言(如C语言)中,结构体用得比较多,但是面向对象之后,如在C++和Objective-C中,结构体已经很少使用了.这是因为结构体能够做的事情,类完全可以取而代之.而Swift语言却非 ...

  7. 1.6建造者模式(生成器模式) Builder

    1.概念:将一个复杂对象的构建和他的表示分离,使得同样的构件可以创建不同的表示. 2.实例:肯德基和中餐,肯德基抽象了整个做菜的复杂过程(相同的构建),然后在不同的店铺进行实现(不同的表示).中餐往往 ...

  8. 谈谈css中的before和after

    css中的伪元素before和after,其实有很多小的妙用. 一.基础用法 w3c中的基础用法:用来给元素的内容前面(对应:before)或者后面(对应:after)插入新内容. <p> ...

  9. spring读取prperties配置文件(1)

    博客地址http://www.cnblogs.com/shizhongtao/p/3438431.html 属性文件命名是*.properties,在java中,用类java.util.Propert ...

  10. c#基础汇总-------------封装

    说到封装,其实是比较基础类的问题,它为程序设计提供了系统与系统,模块与模块,类与类之间交互的实现手段.在.Net中,一切看起来都已经被包装在.Net FrameWork这一复杂的网络中,提供给最终开发 ...