分享

Qt:Segmentationfault

 guitarhua 2013-08-12


(2013-04-18 21:55:57)

micro2440开发板上运行Qt程序时,有时会发生Segmentation fault错误。原因有两个,一是在编译开发板上的Qt库所用arm-linux-gcc和编译Qt程序所用的arm-linux-gcc的版本不同(我想很多人的虚拟机上arm-linux-gcc应该都不止一两个);二是arm-linux-gcc本身的bug

   如果是第一个原因,那么就需要确保Qt库Qt程序所用arm-linux-gcc相同。第二个问题,惟一有效的解决方法是,使用4.1.2版本的arm-linux-gcc。有人提出可以通过修改Makefile,将-O2改为-O1来解决问题,经过尝试,这个方法并不可行。

   此外,运行Qt程序时,如果提示无法加载某些库文件,那么,首先检查环境变量$LD_LIBRARY_PATH是否包含了Qt库文件在开发板上的存放路径;第二,如果环境变量正确,那么,则根据提示,从4.1.2交叉编译工具存放路径下的/lib目录中将所需库文件复制到开发板上的Qt库中去。

续:推荐使用友善的4.4.3版本的交叉编译工具,不仅可以解决Segmental Fault问题,也可以内核reboot失败的问题。

转载至http://hi.baidu.com/???????/blog/item/a28ea217f2c8d20c4a90a7af.html

在移植QT4.6时编译成功,但运行时出现segmentation fault,网上说换成arm-linux-gcc 4.1.2就可以了,但历尽千辛万苦把这个编译下回来后,却发现编译出错,后来在网上找到了如下的方法,试着运行了两个程序都没出问题

程序 qt-embedded-linux-opensource-src-4.5.0/src/gui/embedded/qscreenlinuxfb_qws.cpp
作如下修改:

410行:
            //EmbedSky_del end 20091208
    canaccel = false;

706行:
                //EmbedSky_del end 20091208
    canaccel = false;

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多