静态编译Qt4.4.3

终于在Linux中完成了计算机图形学的作业,但是还必须要提交一个老师能够在windows中运行的可执行程序。

在windows下安装Qt的库非常方便,编译的环境选择了minGW,因为它完全将linux下的编译环境移植到了windows中。直接下载qt-win-opensource-4.4.3-mingw.exe,可以直接双击进行安装(不过在正式安装之前,需要将自己解压并释放到windows的C盘,需要大概1.4GB,刚开始就是因为C盘的空间不够,导致安装程序抽取自己的时候失败。)安装好了之后,可以再去下载一个Qt的集成开发环境——QDevelop。这样直接打开linux里写好的工程选择重新编译就可以了。

但是这个编译生成的程序是通过动态链接的,对方系统中必须有QtCore4.dll和QtGui4.dll这两个动态链接库(程序只使用了Qt的这两部分)还有mingwm10.dll(minGW在调用线程库之后需要用到)。而这些库的大小就有12.4MB。

因此,最好的办法是提交一个静态链接的程序。但是安装的Qt是动态编译的,要生成静态的版本,就需要自己重新进行编译。(编译办法参考http://wiki.qtcentre.org/index.php?title=Building_static_Qt_on_Windows)

首先需要修改位于<QTDIR>\mkspecs\win32-g++下的qmake.conf,在QMAKE_LFLAGS标签中增加-static。然后在“开始”菜单中运行Qt
4.4.3 Command Prompt程序,会启动一个命令行界面。再里面打入configure -static -release
-no-exceptions。接受里面提到的许可之后,就会开始编译生成qmake并进行配置。配置完成以后,再输入mingw32-make
sub-src。这样就开始对Qt进行编译,这步需要很长时间(我上了两节课,回来已经编译好了)。

然后再像以前这样重新编译和生成自己写的程序,这样的生成的可执行程序就是使用静态链接的,可以直接在未安装Qt的电脑上运行。这样的副作用就是,可执行文件变得非常大,有6.81MB!动态链接的版本只有82.5KB。当然,如果加上那些依赖的动态链接库,静态链接的程序在体积上还是有优势的。