qt485mingw461静态编译.docx

上传人:b****1 文档编号:2471277 上传时间:2023-05-03 格式:DOCX 页数:11 大小:278.60KB
下载 相关 举报
qt485mingw461静态编译.docx_第1页
第1页 / 共11页
qt485mingw461静态编译.docx_第2页
第2页 / 共11页
qt485mingw461静态编译.docx_第3页
第3页 / 共11页
qt485mingw461静态编译.docx_第4页
第4页 / 共11页
qt485mingw461静态编译.docx_第5页
第5页 / 共11页
qt485mingw461静态编译.docx_第6页
第6页 / 共11页
qt485mingw461静态编译.docx_第7页
第7页 / 共11页
qt485mingw461静态编译.docx_第8页
第8页 / 共11页
qt485mingw461静态编译.docx_第9页
第9页 / 共11页
qt485mingw461静态编译.docx_第10页
第10页 / 共11页
qt485mingw461静态编译.docx_第11页
第11页 / 共11页
亲,该文档总共11页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

qt485mingw461静态编译.docx

《qt485mingw461静态编译.docx》由会员分享,可在线阅读,更多相关《qt485mingw461静态编译.docx(11页珍藏版)》请在冰点文库上搜索。

qt485mingw461静态编译.docx

qt485mingw461静态编译

QT4.8.5+mingw4.6.1静态编译

以下内容根据网上内容及本人实际操作整理而成

一、准备软件

1.MinGW    (C:

\Qt\MinGW)

这个文件解压就可以用了。

2.ActivePerl

3.qt-win-opensource-4.8.4-mingw.exe(D:

\Qt\4.8.4)

4.qtcreator2.6x

二、安装软件

1.qt-win-opensource-4.8.4-mingw.exe,提示MinGW路径时,指定到正确位置(D:

\Qt\MinGW)

2.安装Perl环境,一路Next即可

3.安装QtCreator

三、标准库编译

1.配置编译选项

1)打开C:

\Qt\4.8.4\mkspecs\win32-g++\qmake.conf

(建议先备份一下)

在QMAKE_LFLAGS后面加上-static

并将QMAKE_LFLAGS_DLL后面的-shared改为-static

保存并关闭

2)将C:

\Qt\4.8.4\bin下的syncqt与syncqt.bat这两个文件删除或改名

否则在编译时会提示找不到perl环境

3)修改src\3rdparty\webkit\Source\WebCore\platform下的DefaultLocalizationStrategy.cpp,定位到327行,将本行替换成

returnWEB_UI_STRING("LookUp\"\"","LookUpcontextmenuitemwithselectedword").replace("",truncatedStringForLookupMenuItem(selectedString));

如不修改将出现编译Webkit时会出现U1077错误。

2.开始编译

静态编译,只要release版本就够了。

debug版,静态编译就没有必要了,debug版随便一个工程,生成的执行文件都要上百兆甚至几百兆,调试时,很慢。

那么release静态版和debug动态版如何共存呢?

稍后再介绍。

打开Qt4.8.4CommandPrompt软件,输入

configure-confirm-license-opensource-platformwin32-g++-release-static-ltcg-no-qt3support-fast-exceptions-accessibility-rtti-stl-qt-sql-sqlite-qt-sql-odbc-qt-zlib-qt-libpng-qt-libtiff-qt-libjpeg-qt-libmng-multimedia-audio-backend-script-scripttools-nomakedemos-nomakeexamples-nomakedocs-qt-style-windows-qt-style-windowsxp-qt-style-windowsvista-qt-style-plastique-qt-style-cleanlooks-qt-style-motif-qt-style-cde-plugin-sql-sqlite-plugin-sql-odbc

configure参数很多,可以参考它的帮助,按自己需要增减参数。

PS:

这个配置仅编译release版本,如果需要同时需要静态版的Debug版本,需要把-release改为-debug-and-release

耐心等待一会,直到提示:

Qtisnowconfiguredforbuilding.Justrunmingw32-make.

Toreconfigure,runmingw32-makeconfcleanandconfigure.

接着输入mingw32-make

等编译结束,如果没有什么errorfail的提示,就恭喜你成功啦!

四、配置QTCreator

打开QTCreator,菜单Tools==》Option==》Build&Run==》

Compiler选项卡:

      如果没有自动检测到,手工点Add按钮,选MinGW,名称就叫MinGW吧,Compilerpath:

D:

\Qt\MinGW\bin\g++.exe

      点击Apply

QtVersions选项卡:

        点Add按钮,选择D:

\Qt\4.8.5\bin\qmake.exe,

                                    versionname:

Qt4.8.5(4.8.5)

        点击Apply

Kits选项卡:

      点Add按钮,name:

qtstatic_rel

                            Devicetype:

Desktop

                            Compiler:

MinGW

                            Debuger:

release版本无所谓,在debug版一定要正确选择,否则无法调试

                            Qtversion:

Qt4.8.5(4.8.5)OK,至此,就可以编译静态的qt程序了,生成的exe文件可以独立运行。

不过生成的exe文件体积比较大,可以用upx压缩一下,会缩小到原来的40%左右。

五、qt静态编译release版本与动态debug版本共存的方法

2012-12-2422:

47

qtrelease版本,用静态编译发布比较方便,一个执行文件就可以去闯天下了。

但debug版本用静态编译就非明智之举了,一方面,没有必要,一方面debug版生成的目标文件随随便便就几百兆,调试起来效率太低了,我就曾饱受煎熬。

如何动静态版本共存呢?

这里介绍一下我用的方法。

前一篇日志说了release静态方法,安装目录是D:

\qt\4.8.5

接下来,再安装一遍qt-win-opensource-4.8.5-mingw.exe,目录不要与前一个目录相同,比如安装到D:

\qt\4.8.4shared.

安装结束后,

打开QTCreator,菜单Tools==》Option==》Build&Run==》

QtVersions选项卡:

        点Add按钮,选择C:

\Qt\4.8.5_shared\bin\qmake.exe,  

                                  versionname:

Qt4.8.5(4.8.5shared)

                                    点击Apply

Kits选项卡:

      点Add按钮,name:

qtshared_dbg

                            Devicetype:

Desktop

                            Compiler:

MinGW

                            Debuger:

先点Manager-->Auto-detect,如果不能正确设置,就手工Edit,

                                                    Engine:

GDBEngine

                                                    Binary:

C:

\Qt\MinGW\bin\gdb-i686-pc-mingw32.exe

                            Qtversion:

Qt4.8.5(4.8.5shared)

在Qt中创建工程,Kits步骤时,

勾选qtstatic_rel  Release

勾选qtshared_dbg  Debug

这样,就实现在选择Release时,静态编译,Debug是动态编译。

 

插件在静态编译release与动态编译debug共存工程中的配置(备忘)

2012-12-2423:

02

Qt静态编译时,使用插件要用Q_IMPORT_PLUGIN宏导入,比如odbc插件,简体中文支持插件

#include

Q_IMPORT_PLUGIN(qsqlodbc)

Q_IMPORT_PLUGIN(qcncodecs)

在pro文件中要加

QTPLUGIN+=qsqlodbc

QTPLUGIN+=qcncodecs

而动态编译,就不能有这些。

对于动静态共存的工程应该如何处理呢?

可以用下面的方法,

在main.cpp文件中

#ifdefQT_NO_DEBUG

    #include

    Q_IMPORT_PLUGIN(qsqlodbc)

    Q_IMPORT_PLUGIN(qcncodecs)

#endif

在pro文件中

CONFIG(release,debug|release){

    QTPLUGIN+=qsqlodbc

    QTPLUGIN+=qcncodecs

}

CONFIG(debug,debug|release){

}

注意,左花括号一定要与CONFIG(xxxx,debug|release)  在同一行,否则起不到限定作用。

这样,工程在静态编译release版和动态编译debug版,都能正常进行了。

打造完美的QT桌面开发环境

1、下载

a)参考博客编译器mingw-static-4.4.5-all.7z,

b)下载qt4.8.5源码包qt-everywhere-opensource-src-4.8.5.zip,http:

//download.qt-project.org/official_releases/qt/4.8/4.8.5/

c)下载qtcreator源码包qt-creator-opensource-src-3.0.1.zip,http:

//download.qt-project.org/official_releases/qtcreator/3.0/3.0.1/

2、解压mingw-static-4.4.5-all.7z到C:

\mingw-static-4.4.5-all

3、编译qt4.8.5为动态库

a)解压qt-everywhere-opensource-src-4.8.5.zip到D:

\qt-everywhere-opensource-src-4.8.5_dynamic

b)建立目录C:

\Qt\4.8.5-dynamic_gcc,把D:

\qt-everywhere-opensource-src-4.8.5_dynamic目录下的mkspecs文件夹复制到C:

\Qt\4.8.5-dynamic_gcc下面。

c)复制下面的脚本

setpath=c:

\mingw-static-4.4.5-all\bin;%path%

cd%~dp0

configure-confirm-license-opensource-release-fast-platformwin32-g++-prefix"C:

\QT\4.8.5-dynamic_gcc"-no-qt3support-script-scripttools-qt-zlib-qt-libpng-qt-libmng-qt-libtiff-qt-libjpeg-qt-sql-sqlite-plugin-sql-sqlite-qt-sql-odbc-plugin-sql-odbc-qt-style-windows-qt-style-windowsxp-qt-style-windowsvista-qt-style-plastique-qt-style-cleanlooks-qt-style-motif-qt-style-cde-nomakedemos-nomakeexamples-mp

mingw32-make

mingw32-makeinstall

Pause

保存为dynamic编译配置.bat,放在D:

\qt-everywhere-opensource-src-4.8.5_dynamic路径下,运行该脚本,等2~3小数后就编译好了。

编译的动态库在C:

\Qt\4.8.5-dynamic_gcc下,

4、编译qt4.8.5为静态库

a)解压qt-everywhere-opensource-src-4.8.5.zip到D:

\qt-everywhere-opensource-src-4.8.5_static

b)建立目录D:

\Qt\4.8.5static,把D:

\qt-everywhere-opensource-src-4.8.5_static目录下的mkspecs文件夹复制到D:

\Qt\4.8.5static下面。

c)复制下面的脚本

setpath=c:

\mingw-static-4.4.5-all\bin;%path%

cd%~dp0

configure-confirm-license-opensource-release-fast-static-platformwin32-g++-prefix"D:

\QT\4.8.5static"-no-qt3support-script-scripttools-qt-zlib-qt-libpng-qt-libmng-qt-libtiff-qt-libjpeg-qt-sql-sqlite-plugin-sql-sqlite-qt-sql-odbc-plugin-sql-odbc-qt-style-windows-qt-style-windowsxp-qt-style-windowsvista-qt-style-plastique-qt-style-cleanlooks-qt-style-motif-qt-style-cde-nomakedemos-nomakeexamples-no-webkit-mp

mingw32-make

mingw32-makeinstall

Pause

保存为static编译配置.bat,放在D:

\qt-everywhere-opensource-src-4.8.5_static路径下,运行该脚本,等2~3小数后就编译好了。

编译的静态库在C:

\Qt\4.8.5-static_gcc下,

5、编译qtcreator

a)下载解压出qtbinpatcher.exe,放到D:

\qt-everywhere-opensource-src-4.8.5_dynamic目录下,并运行它,用来patch该目录下的qmake.exe文件。

我从分离出了Qtbinpatcher.exe,为什么需要这个文件以及其作用,大家网上搜索。

b)解压qt-creator-opensource-src-3.0.1.zip到D:

\qt-creator-opensource-src-3.0.1

复制脚本

setpath=C:

\mingw-static-4.4.5-all\bin;%path%

setpath=D:

\qt-everywhere-opensource-src-4.8.5_dynamic\bin;%path%

setQTDIR=D:

\qt-everywhere-opensource-src-4.8.5_dynamic

setQMAKESPEC=win32-g++

cd%~dp0

qmake

mingw32-make

mingw32-makeinstall

Pause

保存为qt-creator_build.bat,放到D:

\qt-creator-opensource-src-3.0.1目录下,并运行它,等2~3小数编译完。

c)复制D:

\qt-creator-opensource-src-3.0.1目录下的bin、lib和share3个文件夹到C:

\Qt\4.8.5-dynamic_gcc目录下,与里面已经存在的文件夹合并。

再复制qtbinpatcher.exe到C:

\Qt\4.8.5-dynamic_gcc里面,运行qtbinpatcher.exe来patch该路径下的qmake。

到此编译工作全部结束。

6、进入C:

\Qt\4.8.5-dynamic_gcc\bin,运行qtcreator.exe看看效果。

Mingw32、qt4.8.5动态库及静态库全齐了,在qtcreator下怎么配置就不说了。

后记:

在这个过程中试过qtcreator2.8.1、2.7.2等多个版本,只有3.0.1这个版本编译成功。

这个IDE版本的好处:

绿色、免安装、体积小,不用vc作编译器就因为它太大。

Qt应用静态编译,静态链接,去mingwm10.dll,libgcc_s_dw2-1.dll依赖问题

2011-04-1807:

062176人阅读评论

(2)收藏举报

qtwrapperexegcc编译器domain

完全了解逻辑层次os/compiler/framework/application中静态链接、动态链接情况的,请绕道。

linux以及Xnux的大牛,也不用看了。

要想Qt应用做出来只是一个exe就能给客户运行,

有两个情况,搞定即可:

一、mingwm10.dll,libgcc_s_dw2-1.dll依赖

这与qt无关

用vc编译的就不存在……依赖这俩玩意的情况。

那么mingw版下的QT呢?

下载,静态版mingw(mingw本身和gcc都是staticversion)即可,见文末资源。

二、QtCoreX.dllQtXXX.dll等依赖

指定你的应用本身为静态编译即可。

1、project.pro添加QMAKE_LFLAGS=-static,

2、qt本身是静态版编译的,步骤见文末资源。

以上俩条件都需要,虽然qt静态版的,不用满足1即可,但是

逻辑上工程层次得指定,否则假设你是开源的,

别的兄弟拿过去编译,可能有些入行不久的会问为什么他的编译出来的不是一个文件了,呵呵。

而且你保不定自己就一直只有一套qt在跑,我就是静态动态版的都在用。

资源

--------------------------------------------------------------------------------

1、mingw静态编译版本:

有牛人已经做好了,

这个,下载覆盖$QTDIR/../mingw就行,实在不信任我的,覆盖前先备份,就没风险了。

mingw和gcc编译是件不简单的事,

至少我觉得比qt编译复杂,特别是mingw的那一堆工具和补丁,

编译器和编译原理一直是心中的痛啊,啊啊啊。

2、qt静态编译步骤,这里有(注意评论,有更实用的做法提出来):

p.s

至于第三种情况,msvcrt.dll貌似winnt都带着吧,不用管。

kener32.dll?

介个……

然后就是LGPL涉及静态链接版权问题

我个人比较认同“涉及LGPL库的开源,没涉及的可以不开,后者调用前者的部分提供obj”说法。

那么,Qt应用,用wrapper策略吧:

好吧,聪明人会问,编译环境依赖,如mingw10.dll和libgcc_s_dw2-1.dll我看你怎么wrapper?

就已有资料看,这俩已经publicdomain了。

再啰嗦两句,release之前,用upx把你的exe压缩一下,尺寸更小,而debug版……就别了。

最后,希望受dll依赖问题烦扰的,能明白本文第一句。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2