QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8745|回复: 1

QT+MinGW在windows中静态编译程序

[复制链接]
发表于 2008-3-8 13:34:55 | 显示全部楼层 |阅读模式
为什么要静态编译?如果不是静态编译程序,那我们写的程序文件编译生成可执行文件必须依赖QT和MinGW的一些库文件,虽然我们可以将这些依赖的 dll文件一同打包发布,但毕竟看起来不是很好看,而且库内有的东西我们根本用不到,还是要复制整个dll,造成程序发布包比较大。那么,怎么才能使我们的程序在没有安装QT和MinGW的系统上照样运行呢?

首先,要保证QT是静态编译版本。一般我们用的QT都不是静态编译的,需要我们重新编译。在开始菜单里打开"Qt 4.x.x Command Prompt",这时默认是在QT目录里面,分别运行如下命令:
    configure -release -static -fast
    make
    make clean
最后一部其实也算可有可无,第二步在我的电脑上运行了将近3个小时,慢慢等就是。 这样就生成了QT的静态编译版本,我们的程序编译时会自动把QT相关的依赖包含进去。

其次,解决MinGW的mingwm10.dll依赖问题。一般只有用到threads的时候才用到mingwm10.dll,我们通常遇到的"缺少mingwm10.dll"问题,可以在程序qmake生成makefile.release文件后删除"-mthreads"参数即可,一般在 "LFLAGS"后面。当然,这只是临时解决方案,每次都要手动修改,也可以在编译QT前先修改qmake.h,不过不推荐这种方法。其实, mingwm10.dll也就十多K,每次发布程序时一起打包也无所谓。
更多信息可以参考:
http://lists.trolltech.com/qt-interest/2006-08/thread00942-0.html
http://lists.trolltech.com/qt-in ... 381-0.html#msg00553

这样编译出来的程序比较大,可以先用strip命令去掉程序里面一些无用信息后,用ASPack或者UPX之类的压缩加壳软件压缩一下,两者的压缩率基本都达到30%多一点,压缩效果还是很明显的。
发表于 2008-10-17 09:38:51 | 显示全部楼层
请问我用你的方法编译QT4.4.3 for windows 不能通过。  在编译快一个多小时的时候,uic3会报错, 请问如何才能成功编译,谢谢,急等。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-3-28 22:08 , Processed in 0.066959 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表