最近用QT编了一个很水的小程序,虽然之前用过QT但是编出来的程序都是在本机运行,本地的环境什么的当然配置好了能运行,但是拿到别的机子上就不行了,QT默认的编译方式是动态编译,即运行程序需要依赖QT动态链接库中的dll文件,如果想在别的电脑上运行你的程序,就需要把这些dll文件一起放到exe下一起带走,但是QT有几个动态链接库太大了一个就要上百兆,如果你的程序中需要用到这些dll文件中的东西,就需要一起带走,这样的话你做一个很小的程序最后需要运行的话足足要几百兆的空间,很是浪费。还好QT提供了静态编译,就是编译后把你程序中需要用到的东西从dll动态链接库中提取出来,这样的话使得生成的exe可执行文件不再依赖于QT的动态链接库,自然程序最后会小很多。
前几次都是用的QT5,但是不知道为什么在网上找的一些教程里边的很多文件我安装的QT5中都没有,不知道是少下了什么东西还是怎样,现在也没搞懂,最后重新配置QT4的环境编译,成功了,下面分享一下我的经验。其实也都是从网上搜到的教程按着教程来的,很多重复性的东西我就不再写一遍了,就是把过程串一遍,有一个完整的过程。
一、安装QT4和配置QT4
需要的MinGW编译器、QT4和QT Creater,其中环境变量部分的说明不是很详细,可以参考以下内容,其他文章都说的很详细,比如环境变量配置之后的配置qt creater开发环境。
http://blog.csdn.net/lhchen922/article/details/39260745
Qt环境变量的设置可以可以参考Qt安装目录bin文件夹下的qtenv.bat的设置,比如我的安装路径为E:\Qt,那么该目录就在E:\Qt\bin\qtenv.bat,其内容为
看到图片中红框中的内容,
1)、右键单击“我的电脑”-“属性”-“高级”-“环境变量”-“系统变量”
(2)、“新建”,变量名设置为:QTDIR,变量值设置为:E:\Qt
(3)、同2,“新建”,变量名设置为:QMAKESPEC,变量值设置为:win32-g++-4.6
(4)、path变量一般都会有,只要添加就行了,双击下面系统变量中path变量,在变量值后面添加:;
E:\Qt\bin;;E:\Qt\mingw\bin;%SystemRoot%\System32
(5)、上述变量和值必须和qtenv.bat中的对应,然后就OK了。
二、准备设置QT静态编译
参照这篇文章
http://blog.sina.com.cn/s/blog_64053138010131mi.html
把路径改成你自己相应的路径就可以了,最后一步确实时间挺长的,看你电脑具体性能了,最后出现下图说明所有QT静态编译准备过程完毕
三、试运行
现在用release方法编译你的工程,这样静态编译以后只是不再依赖QT的动态链接库,但是你要用到C++或者C的东西的话还是要依赖相应的C或者C++ dll文件,把生成的release文件夹移到其他电脑上运行,如果提示缺少某些dll,就到编译器MingW下的bin里面找到需要的DLL文件,复制到文件夹目录下,相比QT的dll文件小很多了,一般都是几百k,这样的话你的程序就能在任意电脑上运行了。
最重要的是,以后生成的QT程序都可以通过静态编译的方法,不再依赖QT的动态链接库,方便多了。