Qt 4.7.4 完美动态编译发布动态调试,以及静态编译发布
首先是准备工作,去QT主页下载独立的QT类库安装包以及完整QT SDK安装包,还有QT Creator for windows 版
下载地址:http://qt.nokia.com/downloads-cn 最新是 4.7.4 版
还有一个mingw 4.4.5 静态编译版,用来解决mingwm10.dll、 libgcc_s_dw2-1.dll,两个DLL依赖的问题
下载地址是:http://code.google.com/p/qp-gcc/downloads/list
四个文件分别是:
(1) qt-creator-win-opensource-2.3.1.exe // IDE 开发框架
(2) qt-win-opensource-4.7.4-mingw.exe // QT类库安装包
(3) Qt_SDK_Win_offline_v1_1_3_en.exe // QT SDK 完整安装包
(4) mingw-static-4.4.5-all.7z // mingw 静态编译完整版
准备好上面四个文件之后,就可以安装了,安装顺序以上面的(1)--(4)的顺序进行安装
下面说一下安装时需要注意的地方,
第一步:安装的是 qt-creator,安装的时候记得把它自带的 mingw 编译器选上(主要是为了这个 mingw 编译器)。假如默认安装到:C:\Qt\qtcreator-2.3.1
第二步:就是安装 QT 独立类库,由于它不包含编译器,因此在安装的时候有个选项,要你选择 mingw 编译器的路径,
指向 C:\Qt\qtcreator-2.3.1\mingw 目录就可以了。假如默认安装到:C:\Qt\4.7.4
第三步:就是安装完整版的QT SDK,默认安装到:C:\QtSDK
好了,接下来就是关键的静态编译了,打开 C:\Qt\4.7.4\mkspecs\win32-g++ 目录下的 qmake.conf 文件,
修改两个地方:
QMAKE_LFLAGS =
修改为
QMAKE_LFLAGS = -static -enable-stdcall-fixup -Wl,-enable-auto-import-Wl,-enable-runtime-pseudo-reloc
再将
QMAKE_LFLAGS_DLL = -shared
修改为
QMAKE_LFLAGS_DLL = -static
然后打开“开始菜单”-->“程序”-->“Qt by Nokia v4.7.4 (MinGW OpenSource)”菜单下面的 Qt 4.7.4 Command Prompt 也就是QT 命令行,
先配置编译选项,然后再开始编译,这是命令行提示符停留在:C:\Qt\4.7.4 路径,输入以下配置命令:
configure -platform win32-g++ -release -opensource-static -fast -qt-sql-sqlite -plugin-sql-sqlite -no-qt3support -qt-zlib -qt-gif-qt-libpng -qt-libmng -qt-libtiff -qt-libjpeg -no-webkit -qt-style-windowsxp-qt-style-windowsvista -nomake examples -nomake docs -nomake demos
等待配置完成后,进入 src 目录,并进行编译,输入如下命令:
cd src // 进入源码目录
mingw32-make -i -k // 进行静态编译
等待几十分钟后就能编译成功,之后就可以进行第四步了。
第四步:把下载的 mingw 静态编译版的编译器 mingw-static-4.4.5-all.7z 解压到 C:\QtSDK\mingw 目录,为什么?
因为我们要用第三步安装的完整版的QT SDK中带的 qt-creator IDE来进行开发,而不是第一步安装的 qt-creator。
最后的设置,打开 qt-creator 之后,点击“工具”-->“选项”对话框,点击左边的“Qt4”选项,就能看到IDE自动检测到
的 qmake ,但是自动检测的 qmake 只能生成动态编译的程序,现在我们点击右上角的“添加”按钮,找到路径
C:\Qt\4.7.4\bin ,选中该路径中的 qmake.exe 文件,并命名为 “Qt 4.7.4 静态编译”,然后确定就完成了最后的设置。
现在我们来新建一个Qt Gui 应用,在目标设置的时候选择“桌面”,可以看到默认的动态MinGw编译器,以及我们自己
命名的静态MinGW编译器,如下图,记得静态编译的调试是无法生成的,因为我没有把调试也进行静态编译,只是把
发布进行静态编译了。虽然安装占用的空间比较大,但是省却了要调试的时候去修改Makefile.Debug文件的麻烦。

http://blog.csdn.net/mznewfacer/article/details/6990717
Qt 4.7.4 完美动态编译发布动态调试,以及静态编译发布的更多相关文章
- 详解Qt,并举例说明动态编译(shared)和静态编译(static)以及debug and release 编译版本区别(可产生静态版的Debug版本,需要把-release 改为 –debug-and-release)
作为初入Qt学习的新人,花了整整一两天时间,对Qt编译版本等问题进行了一步步探索,首先感谢网站博客中文章,开始也不是很明白一些几个问题: 1.Qt版本问题 作为初学者,可能下载时这么多版本,如何选择呢 ...
- JIT(动态编译)和AOT(静态编译)编译技术比较
Java 应用程序的性能经常成为开发社区中的讨论热点.因为该语言的设计初衷是使用解释的方式支持应用程序的可移植性目标,早期 Java 运行时所提供的性能级别远低于 C 和 C++ 之类的编译语言.尽管 ...
- Qt 静态编译发布和动态编译发布
静态编译发布 你写了一个小型Qt程序,发布的时候不想要一大堆dll文件,就只想打包成一个exe文件,那么就需要用到静态编译. 下面的教程就是Qt静态编译环境配置 Qt5.6静态编译包下载地址 1.下载 ...
- 记录下 QT Linux 静态编译遇到的坑
Qt下静态编译Qt,根据我的经验,如果按照Windows下那种直接拿官方sdk安装之后的文件来编译是行不通的,需要直接下载Qt的source包,目前诺基亚的源码叫做qt-everywhere-open ...
- VS2010使用静态编译的qt库(Qt 5)
Qt 5引入了一种新的编写方式. Qt开发界面很方便,但发布程序就不那么方便了,你的把引用到的dll一起发布才行,要是能静态编译就好了,发布的时候只有一个exe多方便. 虽然以前为了方便,直接安装的q ...
- QT全平台设置图标,全平台静态编译 good
1. 概述 当我们用QT写好了一个软件,要把你的程序分享出去的时候,不可能把编译的目录拷贝给别人去运行.编译好的程序应该是一个主程序,加一些资源文件,再加一些动态链接库,高大上一些的还可以做一个安装 ...
- VS2010使用静态编译的qt库
Qt开发界面很方便,但发布程序就不那么方便了,你的把引用到的dll一起发布才行,要是能静态编译就好了,发布的时候只有一个exe多方便. 虽然以前为了方便,直接安装的qt-windows-opensou ...
- 静态编译Qt5.4.1和Qt WebKit
图灵社区文章地址:http://www.ituring.com.cn/article/195148WebKit是个好东西,做爬虫.显示网页还是想用HTML来做桌面应用的界面都可以用他,不过一直以来都觉 ...
- 静态编译Qt5.4.1和Qt WebKit(网事如风的blog)good
blog文章地址:http://godebug.org/index.php/archives/133/ WebKit是个好东西,做爬虫.显示网页还是想用HTML来做桌面应用的界面都可以用他,不过一直以 ...
随机推荐
- perl 传递对象到模块
perl 中的对象 就是引用 通过new方法传递数据结构给各个模块 [root@wx03 test]# cat x1.pm package x1; use Data::Dumper; sub new ...
- vi 快捷键积累
依据自己用到的.或者还没记住的.或者用的时候忘了的,慢慢积累. 一.全选复制粘贴. 全选: ggVG // 凝视: gg 光标移到首行 V 进入Visual(可视)模式 G 光标移到最后一行全选 选中 ...
- JS中setTimeout()的使用方法具体解释
1. SetTimeOut() 1.1 SetTimeOut()语法样例 1.2 用SetTimeOut()运行Function ...
- db2常用命令(详解)大全
近一年来在项目开发中使用到了IBM的DB2 9.1的数据库产品,跟Oracle相比一些命令有很大的区别,而它最大的功能是支持 xml存储.检索机制,通过XPath进行解析操作,使开发人员免于 ...
- C# - 委托_求定积分通用方法
代码: using System; using System.Collections.Generic; using System.Linq; using System.Text; using Syst ...
- Apache服务器学习笔记
Apache服务器知识 首先我们要知道一共有那几个程序在监听网络端口,即与网络保持活跃连接,打开CMD命令窗口 输入: netstat –an 指令就能显示出所有与网络保持连接的程序,输入net s ...
- UVa 657 掷骰子
意甲冠军:有一个大图.每个像素是格孩子只可能是 . * X 三种.代表背景.玻色子.色子点. 两格子是邻近或在通信,当且仅当两个格儿子*要么X.且具有共同的边,这是上下左右四个方向,斜过,即四连块. ...
- PL/SQL(二):变量
变量 标识符定义 PL/SQL程序设计中的标识符定义与SQL的标识符定义的要求相同.要求和限制有: 个字符. )首字符必须为字母. )不区分大小写. )不能使用SQL保留字. )对标识符的命名最好遵循 ...
- 硬盘被误格式化或Ghost还原后的数据恢复
硬盘格式化(Ghost还原)后的数据恢复 ---diskgenius使用之数据恢复 问题引出:计算机中病毒后用Ghost版本的winxp安装,由于安装途中选择了把映像安装到硬盘而不是分区,安装好后只剩 ...
- socket为send和recv设置超时时间
linux和windows下用setsockopt设置SO_SNDTIMEO,SO_RCVTIMEO的参数的一点区别 UDP的socket在某些情况:如对方关闭时,本地可能sendto不出去数据,然后 ...