代码改变世界

[转]在Windows XP下用GCC 4.3.2编译Qt 4.4.3实战

2009-03-04 12:59  Jaypei  阅读(1397)  评论(0编辑  收藏  举报
1.下载GCC 4.3.2和工具包的编译版,在这里:http://www.tdragon.net/recentgcc/ 点“TDM/MinGW Installer 1.808.3”下载,并且安装好;

2.下载Qt 4.4.3。去这里下载:ftp://ftp.trolltech.com/qt/source/qt-win-opensource-4.4.3-mingw.exe 完成后安装。注意选了MinGW编译器位置之后安装程序会报错,不用管它,确定安装即可;

3.在环境变量的PATH中增加你的MinGW"bin和Qt"4.4.3"bin的详细位置;

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 <security.h>
请在这两行中间加上一行:#include <subauth.h>,使其像这样:
#define SECURITY_WIN32
#include <subauth.h>
#include <security.h>

(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个小时时间(我的电脑CPU是Intel Core Duo T7500的,内存是2G),大概需要4G空间。编译完成后,请输入“mingw32-make clean”清除中间文件,这样可以使占用空间减少到1.95G。

6.好了。请享用GCC 4.3.2和Qt 4.4.3带给你的快乐吧。


---

转载自:

shiyutang

http://www.shiyutang.com/