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

来源:互联网 发布:windows 窗口大小 编辑:程序博客网 时间:2024/04/30 17:00
为什么要静态编译?如果不是静态编译程序,那我们写的程序文件编译生成可执行文件必须依赖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.htmlhttp://lists.trolltech.com/qt-in ... 381-0.html#msg00553这样编译出来的程序比较大,可以先用strip命令去掉程序里面一些无用信息后,用ASPack或者UPX之类的压缩加壳软件压缩一下,两者的压缩率基本都达到30%多一点,压缩效果还是很明显的。