详解Qt,并举例说明动态编译(shared)和静态编译(static)以及debug and release 编译版本区别(可产生静态版的Debug版本,需要把-release 改为 –debug-and-release)

作为初入Qt学习的新人,花了整整一两天时间,对Qt编译版本等问题进行了一步步探索,首先感谢网站博客中文章,开始也不是很明白一些几个问题:

1、Qt版本问题

详解Qt,并举例说明动态编译(shared)和静态编译(static)以及debug and release 编译版本区别(可产生静态版的Debug版本,需要把-release 改为 –debug-and-release)

作为初学者,可能下载时这么多版本,如何选择呢?

版本很多,开发平台Windows、mac、linux等;这里以windows平台为例,x86(Win32位);

winrt   平板电脑下 ;

mingw  Minimalist GNU For Windows,是将GNU开发工具移植到Win32平台下的工具集,用其开发的程序不需要额外的第三方DLL支持即可以直接在Windows下运行;

msvc 2010,2013等,这是微软VC平台,按照了VC对应版本可以选这个,就不用再另外下载MinGw,后缀_64,说明编译的程序在64位上运行

opengl 图像渲染用

具体要按照你的开发环境,系统等来选择合适的

2、静态库下载

在网上寻找 Qt 静态库,就搜索 Qt Static Builds ,目前找到两个地方有: http://sourceforge.net/projects/static-qt/ https://github.com/fostersoftware/QtStaticWindows 第一个是 SourceForge 上的项目,第二个是 GitHub 上的项目,这两个网站希望新手记牢了, 以后要找好东西都可以去这两个网站。 GitHub 上面的 QtStaticWindows 比较新,是 5.3.2 版本的,所以就选这个来做教程示范。 从 GitHub 网站下载东西,可以直接点击网页右边“Download ZIP”
还有就是现在百度云盘下,就不用有些CSDN下载中有的要求积分,这里是免费的,希望对还不是CSDN成员的初学者能够方便,不至于开始就感觉,下载软件都这么难。
Qt5.3.2静态编译的库QtStaticWindows5.3.2-new.7z 网盘链接下载:http://pan.baidu.com/s/1mgIGPdA
指导等见该链接:http://www.chinadmd.com/file/evxxovcexr3s6oeuvuzsozpt_1.html  

3、Qt动态编译和静态,还有debug 和release(调试和发布)

上面是本人通过Qt Creator建立的一个工程文件,名称为“shared_static”,之前网上下载Qt 4.8.5,一般是动态编译,但是只能在该笔记本或台式机上,如果要其他电脑也直接运行,必须要附带动态库,发布时文件较多。

如新建一个Qtgui空窗口,mingw编译程序运行需要动态库mingwm10.dl、QtCore4.dll、QtGui4.dll、libgcc_s_dw2-1.dll。

小时还可以接受,如果动态库很多,就觉得不方便,就像可以只有一个exe跑遍任何windows电脑。

下面教你如何动态库情况下,改为静态编译模式:

最初动态修改为静态方法:
1、C:\Qt\4.8.5\mkspecs\win32-g++\qmake.conf,具体看你安装路径,找到qmake.conf文件打开(notepad或txt都行),修改下面两行:
QMAKE_LFLAGS_DLL后面的 –shared 改为 –static
QMAKE_LFLAGS后面加上 –static
2、C:\Qt\4.8.5\bin 下的syncqt与syncqt.bat 这两个文件删除或改名
3、打开Qt 4.8.5 Command Prompt软件,输入
  configure –static –release –no-exceptions回车

如果需要同时需要静态版的Debug版本,需要把-release 改为 –debug-and-release

回车后会有版本选择和用户协议,先输入”o”(Open Source) ,下一个要输入时输入“y”(Yes)

  …………耐心等待一会…………

直到再次出现:详解Qt,并举例说明动态编译(shared)和静态编译(static)以及debug and release 编译版本区别(可产生静态版的Debug版本,需要把-release 改为 –debug-and-release)
4、接着输入 mingw32-make sub-src

我从22点多直接安装到次日2点的才完成(不过我是选择static下debug和release两种构建套件),同时为了保证运行速度,还是不要运行大的程序,可以去睡觉了,真是漫长。。。。。。

直到再次出现:详解Qt,并举例说明动态编译(shared)和静态编译(static)以及debug and release 编译版本区别(可产生静态版的Debug版本,需要把-release 改为 –debug-and-release)

恭喜你完成动态到静态的修改

5、工具-〉选项,选择Qt
version,ADD(添加)C:\Qt\4.8.5\qmake 选择qmake.exe,其他的选项同动态编译时一样选择。

恭喜你,现在新建工程,然后选择模式,就可以编译静态下的exe了

本人是参考这个,具体见http://www.uzzf.com/news/2131.html,在这里非常感谢版主。

4、Qt动态编译和静态,还有debug 和release生产exe文件大小问题


动态debug详解Qt,并举例说明动态编译(shared)和静态编译(static)以及debug and release 编译版本区别(可产生静态版的Debug版本,需要把-release 改为 –debug-and-release)

动态release详解Qt,并举例说明动态编译(shared)和静态编译(static)以及debug and release 编译版本区别(可产生静态版的Debug版本,需要把-release 改为 –debug-and-release)

静态debug详解Qt,并举例说明动态编译(shared)和静态编译(static)以及debug and release 编译版本区别(可产生静态版的Debug版本,需要把-release 改为 –debug-and-release)

静态release详解Qt,并举例说明动态编译(shared)和静态编译(static)以及debug and release 编译版本区别(可产生静态版的Debug版本,需要把-release 改为 –debug-and-release)

exe文件大小比较
模式 大小KB
动态release 68
动态debug 787
静态release 10645
静态debug 169656

可以清楚的看到,静态比动态模式式生成的exe文件大的多,而debug又比release大的多。

这是本人这几天学习心得,作为新人碰到的一些问题,考虑后面新人可能又会碰到类似问题,觉得还是写这篇博客,仅供学习,禁止抄袭,发扬高尚品德。

5、下载Qt软件的网站推荐下

http://download.qt.io/official_releases/qt/5.4/5.4.1/

http://www.qt.io/download-open-source/#section-2

http://www.qter.org/Qter开源社区

http://www.mingw.org/

http://blog.csdn.net/goodtomsheng/article/details/44829825

上一篇:c# – 如何将IEnumerable>转换为List?


下一篇:LeetCode 033 Search in Rotated Sorted Array