• 10485阅读
  • 2回复

不使用Qt SDK,使用mingw编译qt4.6.2源代码所遇问题及解决方法 [复制链接]

上一主题 下一主题
离线paranoid
 
只看楼主 倒序阅读 楼主  发表于: 2010-05-17
— 本帖被 wd007 执行加亮操作(2010-05-18) —

【使用gcc 4.4.0编译出现乱码】

gcc4.4会自动检测当前的locale,并产生相应的输出。如要使用纯英文环境,设置一下环境变量 LANG=C 或者 LANG=en_US。

【有时候编译QT会出错误:qtvariantproperty.cpp:1927: internal compiler error】

具体原因未知,有人说是 gcc的bug,我怀疑跟内存使用情况有关。所以最好是编译过程中不要搞别的动作,这样会大大减少出现这种情况的几率。不过既然有时候还是会出现这样的问题也得有个解决办法,经过研究可以这样:先去QTDIR/tools/designer/src/lib下,删除tmp目录以及所有qmake生成的 makefile,手动qmake,生成makefile,此时先别make,虽然这时可以成功,但后面的编译无法继续,所以要先回到QTDIR目录,再 make。

【使用gcc4.5.0编译qt4.6.2,报错0xc00000005】

按照gcc4.5.0的说明也不能解决,其实qt的conf文件里面已经添加有这样选项。解决方法为configure之后生成的qmake需要替换成gcc4.4的,再make就没问题了。最后gcc4.5编译出来的qt库有几个(QtCore,QtGui)是gcc4.4编译出来的2倍大小,原因未知,似乎应该是qt本身的问题,因为gcc4.5编译其他东西是没有问题的。

【默认编译QT时不编译phonon模块】

mingw需要打上相应的补丁http://sourceforge.net/tracker/?func=detail& aid=2673182&group_id=2435&atid=302435   补丁中所有文件放到mingw/include下,为了使用补丁还需要下载MSYS 和patch,patch用法:patch < dshow.patch,这样就打好补丁了。这样在configure qt时,就会自动检测到系统支持phonon,于是phono库将被编译。单独安装的MSYS(core)使用某些命令时会出现 warning:terminal is not fully functional (press RETURN),这是由于没有设置/etc/termcap,使用MSYS完整安装版把它下面的termcap考过来就可以了,或者干脆就用完整安装的 MSYS算了,就是版本稍老一点而已,那里面基本上什么都有了。

【启动assistant时,显示cannot load sqlite database driver】

qt编译完了目录不能随便改名,否则会出现某文件找不到的情形,qt编译时把当前qt的路径记住了,写到很多文件里,所以不能随便改名。貌似用qpatch可以改变,有空再研究吧。

【qtcreator中按F1获取上下文帮助,显示No documentation available】

尤其装了多个版本的qt,很容易造成这种混乱,xp系统下,删除C:\Documents and Settings\Administrator\Application Data\Nokia,再重新启动qtcreator即可。

【qtcreator1.3.1->Tools->Options->Qt versions->Debugging Helper显示红叉叉】

先rebuild,一切正常的话,将在QTDIR/qtc- debugging-helper目录下生成gdbmacros.dll,这样就变绿勾勾了。不过虽然可以找到helper库,但是在调试程序的时候还是不能正确显示Qt类以及stl,提示debugging helpers not found。后经反复验证,发现原因是gdb版本不匹配,我自己安装的mingw用的是gdb7.1而debugging helper只能支持到gdb6.8。解决方法为使用qtcreator自带的mingw中的gdb或者自己下个gdb6.8。
离线wd007

只看该作者 1楼 发表于: 2010-05-18
总结的不错。
欢迎访问我的博客,一起学习提高
http://blog.csdn.net/qter_wd007
离线小霸王
只看该作者 2楼 发表于: 2010-09-09
遇到了这个郁闷的问题
【有时候编译QT会出错误:qtvariantproperty.cpp:1927: internal compiler error】
快速回复
限100 字节
 
上一个 下一个