Qte程序执行到app.exec()时出现Segmentation Fault问题的解决

昨天把Qtopia 2.2.0编译移植好了后,今天打算写一个hello world测试一下。拿到可执行文件后,下到板子上,加上-qws选项运行,结果直接Segmentation Fault。代码如下:

#include "qapplication.h"
#include "qpushbutton.h"
#include <stdio.h>
#include <unistd.h>

int main(int argc, char *argv[])
{
        QApplication app(argc,argv);

        QPushButton *hello = new QPushButton("Hello World.",0);
        //printf("hello.\n");
        hello->resize(640,480);
        //hello->move(100,100);
        //printf("hello.move.\n");

        hello->show();

        app.setMainWidget(hello);
        //printf("hello.show.\n");

        while(0)
        {
                printf("show...\n");
                sleep(1);
        }

        return app.exec();
}

检查代码,没问题,每一句后面加上printf语句,发现前面都没有问题,但只要执行到

return app.exec();

就会出现段错误。我在前面加上while(1)都没问题。上网google了一下,也有人遇到这问题,不过说法各不一样,主要都是说是编译器版本的问题,而我的环境不会有这个问题。在最后终于找到了原因:是编译选项需要加上宏QWS。出错前的编译命令为:

arm-hismall-linux-g++ -ohello hello.cpp -I$(HOME)/qt/qt-hisi-2.2.0/qtopia-free-2.2.0/qt2/include -I$(HOME)/qt/qt-hisi-2.2.0/qtopia-free-2.2.0/qt2/src/tools -lqte -L$(HOME)/qt/qt-hisi-2.2.0/qtopia-free-2.2.0/qtopia/lib -Wl,-rpath-link=/home/lzhong/qt/qt-hisi-2.2.0/build/lib
结果编译链接都没有错误,但是一到板子上就是段错误。但加上-DQWS选项后就好了。

转载于:https://my.oschina.net/shelllife/blog/116112

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值