qt静态编译

QT里部署程序有两种方法:一种是动态编译,一种的静态编译
动态编译需要发布.exe程序的同时,附上dll文件,想Qt里的Qtguid4.dll一个就有160M之巨,对于一般的小程序来说,可能只有小小的几M,所以有很多我们根本用不到的东西在里面,最好是将其给消除掉
静态编译时生成唯一一个.exe,在发布程序的时候,只需要这一个程序就可以让用户使用,简单方便。

安装Qt程序的时候,默认的就是动态编译,我想大家都已经会使用了,下面主要探讨静态编译。

静态编译步骤:
1,需要重新编译QT,当然这次编译的时候,是静态编译的。
2.更改Qt\4.7.3\mkspecs\win32-g++下的qmake.conf文件里的
QMAKE_LFLAGS= -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc
将这行用#注释掉
更改为
QMAKE_LFLAGS=-static -static-libgcc -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc
win32-g++需要根据环境,一般情况下是这个。
3.在开始菜单里找到Qt Command Prompt并运行,输入命令:   configure -static -debug-and-release -no-exceptions -fast
上一条命令运行成功后再输入命令:   mingw32-make sub-src
可能你的文件下是src,那么cd ./src后make即可
经过漫长等待后,就可以在qt工程中使用静态编译程序了。

4.一般只有用到 threads的时候才用到mingwm10.dll,我们通常遇到的”缺少mingwm10.dll”问题,可以在程序qmake生成 makefile.release(windows下用记事本打开即可)文件后删除”-mthreads”参数即可,一般在 “LFLAGS”后面。当然,这只是临时解决方案,每次都要手动修改,也可以在编译QT前先修改qmake.h,不过不推荐这种方法。其实, mingwm10.dll也就十多K,每次发布程序时一起打包也无所谓。

QT 4.8 静态库编译方法请参看:

http://www.cnblogs.com/elect-fans/archive/2012/03/24/2415737.html
另外如果需要在静态程序中支持数据库,如sql server等还需要参看http://www.cnblogs.com/elect-fans/archive/2012/03/28/2420647.html
增加-qt-sql-odbc等等

5.如果出现
QSqlDatabase: QODBC driver not loaded
QSqlDatabase: available drivers: QSQLITE
ExportExcelObject::export2Excel failed: QODBC not supported.
解决方法:
将\Qt\qtcreator-2.4.0\bin\sqldrivers里面的qsqlodbc4.dll qsqlodbc4.lib qsqlodbcd4.dll qsqlodbcd4.lib 拷贝到\QtSDK\Desktop\Qt\4.8.0\msvc2008\plugins\sqldrivers的目录
或者相反的方向,总之在两个目录下都要有ODBC的驱动文件!



你可能感兴趣的:(qt静态编译)