QT+MinGW在windows中静态编译程序
2008-06-22 15:10
1036 查看
为什么要静态编译?如果不是静态编译程序,那我们写的程序文件编译生成可执行文件必须依赖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%多一点,压缩效果还是很明显的。
首先,要保证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%多一点,压缩效果还是很明显的。
相关文章推荐
- Linux下编译静态MinGW环境,编译windows平台Qt程序(使用MXE)
- [转载]QT+MinGW在windows中静态编译程序
- Windows下MinGW编译静态Qt5 I
- Windows下静态编译QT程序
- QT5.10开发(2) 在Windows 10下使用MinGW编译 静态Qt 5.10 release版 详细过程
- Fedora 11中用MinGW编译Windows的Qt4程序(在Linux系统下编译Windows的程序)
- Windows下编译静态Qt程序
- Poppler 及 Poppler-Qt4 在Windows下基于MinGW的静态编译 - Poppler Qt4
- 在Windows 10下使用MinGW静态编译Qt 5.9.1的详细过程(Ver 17.0819)
- Windows下MinGW编译静态Qt I 之实践
- windows-qt 使用mingw编译c++boost并使用
- VS2012中使用编译的Qt-5.1.1静态库开发程序
- 如何自己编译Qt,为静态编译程序减少依赖方便发布做准备
- Linux/Ubuntu下 静态编译Qt程序
- VS2008纯静态编译QT4.8.0,实现VS2008编译调试Qt程序,QtCreator静态发布程序
- Windows下用VC与QT编译MPI程序入门
- Windows下静态编译Qt5
- QT初探-在windows下编译QT程序
- Linux 下 静态编译Qt程序
- 64位windows上用mingw编译32位程序的一种方法