• 7941阅读
  • 26回复

[提问]Qt5.1.0 MSVC2012 Update 3编译运行有bug? [复制链接]

上一主题 下一主题
离线roywillow
 

只看楼主 倒序阅读 楼主  发表于: 2013-07-06
难得下周没考试没复习压力,尝试编译了一下Qt5.1.0,结果发现并不顺利。
我的编译运行环境是Windows 8 Pro 64bit,MSVC2012.3,源码是官方download页面中提供的zip包。
配置参数是
-prefix "E:\Qt5.1.0-MSVC2012-x64" -release -opensource -c++11 -ltcg -nomake demos -nomake tests -nomake examples -accessibility -opengl desktop -platform win32-msvc2012 -qt-zlib -qt-pcre -no-icu -qt-libpng -qt-libjpeg -qt-freetype -no-angle -no-vcproj -sse2 -sse3 -ssse3 -sse4.1 -sse4.2 -avx -avx2 -openssl -no-qml-debug -native-gestures -mp

源码目录外编译
手动修改makespecs中的优化选项-O2为-O1(体积优化),-MD为-MT(静态链接msvcrt),链接选项/DYNAMICBASE改为/DYNAMICBASE:NO

配置过程一切顺利,开始编译很顺利。
但是当编译到widgets模块时,需要调用uic.exe,但是这个东西直接运行崩溃,结果不得不拿5.0.2中的来顶替一下。
随后出现了一些头文件找不到的错误,也都将就着解决了。
之后一切顺利。
但是当生成qm翻译文件的时候,调用lrelease.exe也崩溃掉了,然后又是拿5.0.2中的顶替一下才通过。
之后顺利install完成。
这个时候我最后检查了一下uic和lrelease,双击直接运行依然崩溃掉,编译一个带ui文件的工程自然也是行不通。(然后又检查了一下bin中的其他exe,发现xmlpatterns.exe跟5.0.2一样崩溃掉……)
我检查了一下uic和lrelease的文件大小,发现每个都不到1M,比5.0.2的小很多,所以我在想难道是update3自己的bug?
各位有没有遇到类似的情况?
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线kimtaikee

只看该作者 1楼 发表于: 2013-07-06
大姐还在上学中?

离线roywillow

只看该作者 2楼 发表于: 2013-07-06
回 1楼(kimtaikee) 的帖子
嗯……

求回答重点……
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线kimtaikee

只看该作者 3楼 发表于: 2013-07-06
回 2楼(roywillow) 的帖子
目测是传说中的女博士?

离线roywillow

只看该作者 4楼 发表于: 2013-07-06
回 3楼(kimtaikee) 的帖子
八年,博士……

老大不要歪楼啊!!!!
现在用update3的难道不多吗?
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线kimtaikee

只看该作者 5楼 发表于: 2013-07-07
LZ 用的东西都比较时髦,我等使用的工具太古董了,表示没用过爱莫能助。

离线realfan

只看该作者 6楼 发表于: 2013-07-07
Re:回 2楼(roywillow) 的帖子
引用第3楼kimtaikee于2013-07-06 22:59发表的 回 2楼(roywillow) 的帖子 :
目测是传说中的女博士?

让你回答重点呢~~~~~~
离线XChinux

只看该作者 7楼 发表于: 2013-07-07

-prefix "E:\Qt5.1.0-MSVC2012-x64" -release -opensource -c++11 -ltcg -nomake demos -nomake tests -nomake examples -accessibility -opengl desktop -platform win32-msvc2012 -qt-zlib -qt-pcre -no-icu -qt-libpng -qt-libjpeg -qt-freetype -no-angle -no-vcproj -sse2 -sse3 -ssse3 -sse4.1 -sse4.2 -avx -avx2 -openssl -no-qml-debug -native-gestures -mp


这些选项都好细的说,将那些优化选项,不确定选项去掉和禁用掉编译呢?
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线skykingf

只看该作者 8楼 发表于: 2013-07-07
不懂 帮顶了  问一下 编译一次要几个小时?
离线realfan

只看该作者 9楼 发表于: 2013-07-07
回 7楼(XChinux) 的帖子
折腾一天,装了VS2012+Update3,试着编译了一下。
nmake及nmake install 都没问题。
在Qt Creator中添加Qt Version时,提示:ABI detection failed: Make sure to use a matching compiler when building.打算重新安装一次VS2012再重试一次
离线roywillow

只看该作者 10楼 发表于: 2013-07-07
回 9楼(realfan) 的帖子
OTL
您是装完vs2012直接装的update3么?
您是静态编译?有没有修改过qmake.conf?
另外求相关参数

我修改了太多的东西,有些不好排除问题所在啊……
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线realfan

只看该作者 11楼 发表于: 2013-07-07
回 10楼(roywillow) 的帖子
是装完VS2012,直接装update3
用的静态编译,
修改了\qt-everywhere-opensource-src-5.1.0\qtbase\mkspecs\win32-msvc2012\qmake.conf
QMAKE_CFLAGS_RELEASE    = -O2 -MT
QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += -O2 -MT -Zi
QMAKE_CFLAGS_DEBUG      = -Zi -MTd
配置参数我用的是:
configure -confirm-license -opensource -platform win32-msvc2012 -release -static -ltcg -prefix "C:\QT\5.1.0-rel-static_vc2012" -qt-sql-sqlite -qt-sql-odbc -plugin-sql-sqlite -plugin-sql-odbc -qt-zlib -qt-libpng -qt-libjpeg -opengl desktop -qt-freetype -no-qml-debug -no-c++11 -no-angle -nomake docs -nomake tests -nomake examples -nomake demos -skip qtwebkit

nmake 和nmake install都没问题,就是用的时候有问题。
离线realfan

只看该作者 12楼 发表于: 2013-07-07
编译结果有6.6G,mingw是400多M。差好多
离线realfan

只看该作者 13楼 发表于: 2013-07-07
去打算
QMAKE_CFLAGS_DEBUG      = -Zi -MDd
这行这样子,试一次。
离线roywillow

只看该作者 14楼 发表于: 2013-07-08
回 12楼(realfan) 的帖子
应该是因为ltcg的关系,这东西会导致生成的静态库超大,大到webkit模块无法生成
QMAKE_CFLAGS_DEBUG      = -Zi -MDd

这个应该只会影响debug版吧
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线realfan

只看该作者 15楼 发表于: 2013-07-08
回 14楼(roywillow) 的帖子
真有可能。
昨晚重新编译了一遍,QMAKE_CFLAGS_DEBUG      = -Zi -MDd,结果大小和原来一样。
虽然有那个ABI detection failed: Make sure to use a matching compiler when building.
但还是可以用的。
本想今天传到网盘上分享一下。
经你提示,打算去掉ltcg,再试一下。
6.6G,太大了。那些lib文件,小的几十M,多数一百多M,还是600多,700多M的。
离线roywillow

只看该作者 16楼 发表于: 2013-07-08
回 15楼(realfan) 的帖子
ltcg最终生成的dll和exe会比较小,这个我之前做过对比
现在周末一过,我又没时间搞qt了T^T
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线realfan

只看该作者 17楼 发表于: 2013-07-09
Re:回 12楼(realfan) 的帖子
引用第14楼roywillow于2013-07-08 08:46发表的 回 12楼(realfan) 的帖子 :
应该是因为ltcg的关系,这东西会导致生成的静态库超大,大到webkit模块无法生成
这个应该只会影响debug版吧

经过考虑,我觉得生成文件大的原因,应该是
QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += -O2 -MT -Zi


带Debug了,就会很大。把MT改回MD,体积就小了。
我重新编译了一次,只有600多M了。虽然我去掉了ltcg,但我还是认为是DEBUGINFO用了MT导致的体积巨大。
离线roywillow

只看该作者 18楼 发表于: 2013-07-09
回 17楼(realfan) 的帖子
我觉得单纯进行release编译,最后生成的库应该不是with debuginfo的吧
我在之前编译webkit的时候,开启ltcg,生成的webcore静态库体积直接超过2G,编译失败,但是关掉这个选项就非常顺利
所以我认为ltcg才是库的体积变大的原因
另外……我这生成的5.1.0 msvc2012 ltcg版体积也就338M啊(当然uic之类的还是跑不了),比5.0.2的稍大一些……如果算上编译的中间文件,就7G多了
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线realfan

只看该作者 19楼 发表于: 2013-07-09
回 18楼(roywillow) 的帖子
那我今天晚上就再加上ltcg试试
离线roywillow

只看该作者 20楼 发表于: 2013-07-09
回 19楼(realfan) 的帖子
您这真是……锲而不舍啊
刚才回复的时候忘了你这是静态编译了……
感觉开了ltcg之后静态库的大小基本上跟所有中间的object文件差不多大
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线realfan

只看该作者 21楼 发表于: 2013-07-09
回 20楼(roywillow) 的帖子
已经开始编译了,这次又加上ltcg
但QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += -O2 -MD -Zi
看看有多大
离线realfan

只看该作者 22楼 发表于: 2013-07-09
回 20楼(roywillow) 的帖子
mingw加了ltcg也只有几百M
所以,我觉得几G,应该是调试信息导致。
一切明早见分晓
离线realfan

只看该作者 23楼 发表于: 2013-07-10
回 20楼(roywillow) 的帖子
你是对的。加了ltcg,又是6.6G
离线roywillow

只看该作者 24楼 发表于: 2013-07-10
回 23楼(realfan) 的帖子
看样子是mingw和msvc的ltcg的机制之类的有所不同
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线neil-wen

只看该作者 25楼 发表于: 2013-08-15
受益了   谢谢
离线skykingf

只看该作者 26楼 发表于: 2013-09-26
你们编译出来的assistant能用吗?
快速回复
限100 字节
 
上一个 下一个