Window下静态编译:
Qt默认的编译方式是动态编译的,但是有时候你编写的程序要发布出去,带很多动态库文件是很繁琐的,此时就需要静态编译你的程序,Qt要实现静态编译必须库文件也是静态编译的,可以用以下方法编译静态库:
方法(一):
1.编辑C:\Qt\2009.05\qt\mkspecs\win32-g++\qmake.conf 文件把 QMAKE_LFLAGS = -enable-stdcall-fixup -Wl,-enable-auto-import-Wl,-enable-runtime-pseudo-reloc
改为:QMAKE_LFLAGS = -static-enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc(QMAKE_LFLAGS标签中增加-static)
note:(C:\Qt\2009.05为QT的安装目录,因个人而异)
2.在开始菜单里找到QtCommand Prompt并运行,输入命令: configure -static -debug-and-release -no-exceptions
note:
上述命令格式为:
Configure空格–static空格-debug-and-release空格-no-exceptions
当输入错误时(中间少了空格或写错字),你可以输错命令就可以查看到帮助文档,如下截图:
3.命令正确时会提示选择版本,如下截图,请输入o(open scoure edition)
4.输入0之后会出现License选择,如下截图,请输入y
5.选择accept license后QT开始配置相关设置,设置好了会有命令行出现,并有如下截图。
6.上一条命令运行成功后再输入命令: mingw32-make sub-src编译需要花很多时间,等1 ~3 小时可能就运行完了 ,编译完成标识(有命令行出现,一般不会出错),完成后就ok了。
MAC下静态编译:
1.下载qt-mac-opensource-src-4.6.2.tar.gz
2.解压缩到/目录,tar –xvfqt-mac-opensource-src-4.6.2.tar.gz
cd到目录/qt-mac-opensource-src-4.6.2/,
3.打开目录下的projects.pro,删除demos,doc,examples,删除方法:在解压的目录下打开projects.pro文件,搜索含examples,demos,docs的else语句并删除。再进入tools目录打开tools.pro删除assistant(删除这些是为了不编译这些工程),也可以不删除,时间会更久一些。
4.执行./configure-release -static -fast(大约5~6分钟),执行make(约两小时))。如出现错误,运行make clean,重新第4步;如无错,运行make install(10分钟)
5.选择编译安装好的版本4.6.2编译工程,如出现(qcc编译问题),进入mkspecs/common/mac-g++.conf 文件(删除含ppc项)
Window上配置环境变量:
PATH=C:\Qt\2010.02.1\bin
PATH=C:\Qt\2010.02.1\qt\bin
然后再像以前这样重新编译和生成自己写的程序,这样的生成的可执行程序就是使用静态链接的,可以直接在未安装Qt的电脑上运行。这样的副作用就是,可执行 文件变得非常大,有6.81MB!动态链接的版本只有82.5KB。当然,如果加上那些依赖的动态链接库,静态链接的程序在体积上还是有优势