Qt4.4.3 + MinGW5.1.4 for Windows 安装笔记
10:17 | Author: Hui Li 李辉

我使用的是qt-win-opensource-4.4.3-mingw + MinGW-5.1.4 在windows XP系统下安装。

1.首先是下载地址:
qt-win-opensource-4.4.3-mingw
ftp://ftp.trolltech.com/qt/source/qt-win-opensource-4.4.3-mingw.exe
MinGW-5.1.4
http://www.qtcn.org/download/MinGW-5.1.4.exe
也可以到QT中文论坛寻找最新的版本
http://www.qtcn.org/bbs/read.php?tid=1075

2.下载后进行安装
可以先安装MinGW也可以两个同时进行安装。
注意在安装QT时指定MinGW的路径为你安装MinGW时的路径,类似C:\MinGW,如果系统报错不用管它,只要你输入的MinGW路径对就行了。
在安装MinGW时可以选几个组建,我选了MinGW base tools, g++ Compiler, Objective C Compiler 和 MinGW Make,其他的下一步就好了,会需要下载几个包,注意保持联网,安装速度视网速而定。

3.安装后进行环境变量设置
假设刚才安装的QT和Mingw目录分别是:
C:\Qt\4.4.3;
C:\MinGW;
现在打开右键我的电脑,系统属性-高级-环境变量
设置如下环境变量
把C:\MinGW\bin和C:\Qt\4.4.3\bin以及C:\MinGW\mingw32\bin添加到Path;
把C:\MinGW\lib和C:\Qt\4.4.3\lib添加到Lib (如果没有Lib,请创建一个);
把C:\MinGW\include和C:\Qt\4.4.3\include添加到Include (如果没有Include,请创建一个);
确定设置环境变量。此时已经启动新的环境变量。

4.Qt 4.4.3可能有些小bug,编译时会报错,所以需要修改以下一些文件:

(1) Qt\4.4.3\src\corelib\arch\qatomic_windows.h:找到第386-392行,应该是这样的:
extern "C" {
__declspec(dllimport) long __stdcall InterlockedCompareExchange(long *, long, long);
__declspec(dllimport) long __stdcall InterlockedIncrement(long *);
__declspec(dllimport) long __stdcall InterlockedDecrement(long *);
__declspec(dllimport) long __stdcall InterlockedExchange(long *, long);
__declspec(dllimport) long __stdcall InterlockedExchangeAdd(long *, long);
}
请改成这样:
extern "C" {
__declspec(dllimport) long __stdcall InterlockedCompareExchange(volatile long *, long, long);
__declspec(dllimport) long __stdcall InterlockedIncrement(volatile long *);
__declspec(dllimport) long __stdcall InterlockedDecrement(volatile long *);
__declspec(dllimport) long __stdcall InterlockedExchange(volatile long *, long);
__declspec(dllimport) long __stdcall InterlockedExchangeAdd(volatile long *, long);
}

(2) Qt\4.4.3\src\corelib\io\qfsfileengine_win.cpp:找到第67-68行,应该是这样的:
#define SECURITY_WIN32
#include
请在这两行中间加上一行:#include ,使其像这样:
#define SECURITY_WIN32
#include
#include

(3) Qt\4.4.3\src\gui\inputmethod\qwininputcontext_win.cpp,找到第500行,应该是这样:
bool QWinInputContext::endComposition()
请在这行前面加上一行extern bool qt_sendSpontaneousEvent(QObject *, QEvent *);,使其像这样:
extern bool qt_sendSpontaneousEvent(QObject *, QEvent *);
bool QWinInputContext::endComposition()

5.OK,现在应该可以编译了。点开始菜单中的“Qt by Nokia v4.4.3 (OpenSource)”->“Qt 4.4.3 Command Prompt”,然后输入“configure -debug-and-release -plugin-sql-sqlite -plugin-sql-odbc -qt-libpng -qt-libjpeg”回车进行configure,几分钟之后configure完成,再输入“mingw32-make”回车就可以编译了。编译可能需要3个小时时间,大概需要4G空间。编译完成后,请输入“mingw32-make clean”清除中间文件,这样可以使占用空间减少到1.95G。

6.完成后就可以使用了
做好程序后使用
uic -o form.h form.ui 生成ui的头文件
qmake -project 生成工程文件
qmake 生成makefile文件
mingw32-make 或 make 编译整个工程,生成.exe文件在debug文件夹或release文件夹下。

7.动态编译和静态编译
此种编译方法为动态编译,做出的程序如果要在没有安装MinGW 和 QT的windows电脑上运行,会提示缺少mingwm10.dll, QtCored4.dll, QtGuid4.dll文件,只要到你的电脑中的QT和MinGW安装目录中找到这些文件拷贝到你程序的debug文件夹下就可以了。静态编译出的文件虽然很小,但是这3个dll文件就要几十MB,所以总体来说是很大的。
所以我们可以采用静态编译,静态编译后的Qt就不需要再拷贝这3个dll文件了,首先需要修改位于\mkspecs\win32-g++下的qmake.conf,在QMAKE_LFLAGS标签中增加-static。然后在“开始”菜单中运行Qt 4.4.3 Command Prompt程序,会启动一个命令行界面。再里面打入configure -static -release -no-exceptions。接受里面提到的许可之后,就会开始编译生成qmake并进行配置。配置完成以后,再输入mingw32-make sub-src。这样就开始对Qt进行编译,这步需要很长时间。然后再像以前这样重新编译和生成自己写的程序,这样的生成的可执行程序就是使用静态链接的,可以直接在未安装Qt的电脑上运行。

This entry was posted on 10:17 and is filed under . You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

0 评论: