[转载]QT+MinGW在windows中静态编译程序


为 什么要静态编译?如果不是静态编译程序,那我们写的程序文件编译生成可执行文件必须依赖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,每次发布程序时一起打包也无所谓。
posted @ 2009-08-31 10:59  firefly_liu  阅读(747)  评论(0编辑  收藏  举报