Qtopia2 编译过程错误总结与解决方法_qsizepolicy::qsizepolicy(int) is private within-程序员宅基地

技术标签: layout  include  Qt  编译器  function  constructor  delete  

环境:s3c6410  Ubantu9.10   arm-linux-gcc-3.4.5(s3c6410交叉编译器)     gcc version 4.4.1(PC linux编译器版本)

 

本节主要讲述 s3c6010 上的Qtopia2.2.0 的编译方法。 PC版本,qvfb运行的Qtopia2.2.0 的编译 也可以参考。

 

PC环境:Ubantu9.10 

开发板:s3c6410  

交叉编译器:arm-linux-gcc4.4.1/arm-linux-gcc 4.3.2

 

下面开始arm版本Qtopia2.2.0版本的编译

如果您还没有安装arm-linux-gcc-4.4.1 交叉编译器,请先安装该交叉编译器到/usr/local/arm 下面,把arm-linux-gcc-4.4.1压缩包解压到该目录即可完成安装。

    

需要注意的是:

1 编译Qtopia时确保您的Ubantu9.10环境中安装了GNU g++编译器,Qtopia编译过程中用这个编译器用来编译一些工具在PC上运行.

 

2 注意您的Ubantu中要安装X11的SDK库,Qtopia编译过程中需要使用X11SDK里面的一些头文件,使用以下命令即可安装需要的文件

#apt-get install libx11-dev libxext-dev libxtst-dev

 

 另外需要安装工具uuid(Universally Unique Identifier,)和 xmu库文件, 编译Qtopia2.2.0时需要这些在PC上运行的工具和第三方库文件

 

 apt-get install  uuid-dev

 apt-get install libxmu-dev libxmu6

如果不安装 uuid和xmu将会出现下面的错误:

没有安装xmu时,编译提示:

  /usr/bin/ld:cannot find -lXmu

没有安装uuid时,编译提示:

Creating pngscale...make[1]: Entering directory `/root/yizhi/qtopia-free-2.2.0/qtopia/util/pngscale'
..make[1]: *** [../../bin/pngscale] Error 1
make[1]: Leaving directory `/root/yizhi/qtopia-free-2.2.0/qtopia/util/pngscale'
Failed to make pngscale

 

    

3 编译时 虚拟机中的ARM-qtopia-free-src-2.2.0.tar.gz 文件不能放在与Windows共享的目录中,否则会编译出错.

 

说明:以下的错误信息是按照 先后顺序 发现和处理的,用户可以根据自己的错误类型信息,自己进行修改.

        这些错误是自己经历并解决的,也参考了其他网友的一些办法,总结一下,与大家分享

 

1 编译错误:open函数参数不够 

 

    /usr/include/bits/fcntl2.h:51: error: call to ‘__open_missing_mode’ declared with attribute error: open   with O_CREAT in second argument needs 3 arguments

 

  解决办法:

 

  在Ubuntu 9.10上, gcc会严格检查open()的参数传递,如果第二个参数为O_CREAT的话(就像qtopia-2.2.0-   FriendlyARM/qt2/src /tools/qmemoryfile_unix.cpp的143行这样),必须传入第三个参数mode。因此,手动修改x86-qtopia- 2.2.0/qt2/src/tools/qmemoryfile_unix.cpp 143行将


    if (!f)
        f = open(tmpFile.latin1(), O_CREAT | O_WRONLY);   
  修改为
    if (!f)
        f = open(tmpFile.latin1(), O_CREAT | O_WRONLY, 0666);

 

2   使用未定义的类

  
     error: ‘QWSInputMethod’ has not been declared

     修正方法:

    cd $QTDIR/src/kernel 

 

    gedit qwindowsystem_qws.h

    在前面增加以下两行

   class QWSInputMethod;
   class QWSGestureMethod;

 

   该文件中使用了这两个类,C++允许在文件中这样声明其他地方定义的类,减少头文件的相互包含关系,加快编译速度

 

3  缺少头文件

 

  错误信息:

 

  kernel/qpixmapcache.cpp:125:57: error: asm/page.h: No such file or directory
  kernel/qpixmapcache.cpp: In constructor ‘QSharedMemoryManager::QSharedMemoryManager()’:
  kernel/qpixmapcache.cpp:539: error: ‘PAGE_SIZE’ was not declared in this scope
  kernel/qpixmapcache.cpp:539: error: ‘PAGE_MASK’ was not declared in this scope
  kernel/qpixmapcache.cpp: In member function ‘void QSharedMemoryManager::internal_free(QSMemPtr)’:
  kernel/qpixmapcache.cpp:773: error: ‘PAGE_SIZE’ was not declared in this scope
  kernel/qpixmapcache.cpp:773: error: ‘PAGE_MASK’ was not declared in this scope
  make[1]: *** [tmp/release-shared-linux-generic-g++-no-keypad/kernel/qpixmapcache.o] Error 1
  make[1]: Leaving directory `/root/yizhi/host/qtopFolder[

 

 

  解决办法:2.6内核中不再含有asm-i386的page.h 修改qt2/src/kernel/qpixmapcache.cpp 文件

 

#ifdef THROW_AWAY_UNUSED_PAGES


# include <sys/mman.h> // madvise
#define PAGE_SHIFT   12  //new add 2010-12-10
#define PAGE_SIZE  (1UL << PAGE_SHIFT)  //new add 2010-12-10
#define PAGE_MASK  (~(PAGE_SIZE-1))    //new add 2010-12-10
//# include <asm/page.h> // PAGE_SIZE,PAGE_MASK,PAGE_ALIGN  //注释掉,不需要此行  2010-12-10

 

4   类型转换错误

 

 /home/work/armqt/qtlibsource/qt-x11/include/qvalue stack.h: In member function 'T QValueStack<T>::pop() [with T = QMap<QString, QString>]': 
xml/qxml.cpp:513:   instantiated from here 
  /home/work/armqt/qtlibsource/qt-x11/include/qvalue stack.h:57: 错误:不能从'QValueListIterator<QMap<QString, QString> >'转换到'const char*',为实参'1'(属于'int remove(const char*)') 
/home/work/armqt/qtlibsource/qt-x11/include/qvalue stack.h: In member function 'T QValueStack<T>::pop() [with T = QString]': 
xml/qxml.cpp:2502:   instantiated from here 
  /home/work/armqt/qtlibsource/qt-x11/include/qvalue stack.h:57: 错误:不能从'QValueListIterator<QString>'转换到'const char*',为实参'1'(属于'int remove(const char*)') 解决办法:vi include/qvaluestack.h 

 

 

  解决办法:
template<class T>
class Q_EXPORT QValueStack : public QValueList<T>
{
public:
    QValueStack() {}
   ~QValueStack() {}
    void  push( const T& d ) { append(d); }
    T pop()
    {
 T elem( this->last() );
 if ( !this->isEmpty() )
     this->remove( this->fromLast() );//  add  "this->" 2010-12-10  
 return elem;
    }

 

5   没有找到uic工具  错误提示:

 

    make[5]: /root/yizhi/host/qtopia-free-2.2.0/qt2/bin/uic: Command not found
    make[5]: *** [../../../include/qtopia/private/passwordbase_p.h] Error 127

 

   解决办法:

 

              cd到你的qtopia-free-2.2.0目录下, find ./  -name uic 会看到其他的目录下已经有了uic,我把qt3/bin

      目录下的uic拷贝到 qt2/bin下面,即可

 

6    多余的符号错误,即类的成员函数在头文件中不需要加类名

 

    qdawg.cpp:294: error: extra qualification ‘QDawgPrivate::’ on member ‘QDawgPrivate’     
make[5]: *** [.obj/release-shared/qdawg.o]oo

 

 

   解决办法:

 

    qtopia-free-2.2.0/qtopia/src/libraries/qtopia/qdawg.cpp 里面的

 

    QDawgPrivate::~QDawgPrivate() 

    {

         delete memoryFile;

    }

修改为:

    ~QDawgPrivate()  //  delete   "QDawgPrivate::~" 2010-12-10 
    {
        delete memoryFile;
    }

 

7

    指针类型转换出错:

 

  backend/vobject.cpp: In function ‘VObject* addGroup(VObject*, const char*)’:
  backend/vobject.cpp:419: error: invalid conversion from ‘const char*’ to ‘char*’
  backend/vobject.cpp: In function ‘void writeEncString(OFi

 

 解决办法:

 

  修改 qtopia-free-2.2.0/qtopia/src/libraries/qtopia/backend/vobject.cpp 文件149行

 

   char *dot = strrchr(g,'.');    修改为 char *dot = (char *)strrchr(g,'.');

 

   错误:编译器找不到QSizePolicy类的五个参数的构造函数

 

   ui/release-shared/passwordbase_p.cpp:35: error: no matching function for call to ‘QSizePolicy::QSizePolicy(QSizePolicy::SizeType, QSizePolicy::SizeType, int, int, bool)’
/root/yizhi/host/qtopia-free-2.2.0/qt2/include/qsizepolicy.h:93: note: candidates are: QSizePolicy::QSizePolicy(int)
/root/yizhi/host/qtopia-free-2.2.0/qt2/include/qsizepolicy.h:99: note:                 QSizePolicy::QSizePolicy(QSizePolicy::SizeType, QSizePolicy::SizeType, bool)
/root/yizhi/host/qtopia-free-2.2.0/qt2/include/qsizepolicy.h:63: note:                 QSizePolicy::QSizePolicy()
/root/yizhi/host/qtopia-free-2.2.0/qt2/include/qsizepolicy.h:46: note:                 QSizePolicy::QSizePolicy(const QSizePolicy  & )

 

   解决办法:

 

    qtopia-free-2.2.0/qtopia/src/libraries/qtopia/.ui/release-shared/passwordbase_p.cpp 文件中的38行位置

    prompt = new QLabel( this, "prompt" );
    prompt->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)1, 0, 0, prompt->sizePolicy().hasHeightForWidth() ) );

 

  修改为:

 

    prompt = new QLabel( this, "prompt" );
    prompt->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)1, prompt->sizePolicy  ().hasHeightForWidth() ) );

 

  即去掉0,0 两个参数

 

 

 9   g++编译器提示 有多余的符号在成员函数前 ,有些编译器规定C++成员函数前不需要再加这个类的名字,与第6处错误雷同

 

 thumbnailview_p.h: At global scope:
 thumbnailview_p.h:81: error: extra qualification ‘ThumbnailItem::’ on member ‘paintItem’
 make[5]: *** [.obj/release-shared/imageselector.o] Eopia/src

 

  解决办法 :

 

      qtopia-free-2.2.0/qtopia/src/libraries/qtopia2/thumbnailview_p.h文件中第81行:

 

    修改 void ThumbnailItem::paintItem( QPainter*, const QColorGroup& );

    修改后  void  paintItem( QPainter*, const QColorGroup& );


   继续编译后会出现类似的错误

 

abtable_p.h:276: error: extra qualification ‘PhoneTypeSelector::’ on member ‘addType’
make[5]: *** [.obj/release-shared/abtable.o] Error 1
make[5]: Leaving directory `/root/yizhi/host/qtopia-free-2.2.0/qtopia/src/libraries/qtopiapim'
make[4]: *** [all] Error 2

 

   解决办法:

     修改 qtopia-free-2.2.0/qtopia/src/libraries/qtopiapim/abtable_p.h 文件中276行

 

 QListViewItem* PhoneTypeSelector::addType(QListViewItem* prevItem,
        QString number, const char* pixmapName, PimContact::ContactFields phoneType);

 

  修改为:

     QListViewItem* addType(QListViewItem* prevItem,QString number, const char* pixmapName, PimContact::ContactFields phoneType);

 

   也就是去掉 PhoneTypeSelector::

 

 

  继续编译:

     ../../../include/qtopia/pim/private/../../../../src/libraries/qtopiapim/numberentry_p.h: At global scope:
../../../include/qtopia/pim/private/../../../../src/libraries/qtopiapim/numberentry_p.h:106: error: extra qualification ‘NumberEntryDialog::’ on member ‘eventFilter’
make[5]: *** [.obj/release-shared/numberentry.o] Error 1
make[5]: Leaving directory `/root/yizhi/host/qtopia-free-2.2.0/qtopia/src/libraries/qtopiapim'
make[4]: *** [all] Error 2

 解决办法:

     修改 qtopia-free-2.2.0/qtopia/src/libraries/qtopiapim/numberentry_p.h   第106行

      bool NumberEntryDialog::eventFilter(QObject *o, QEvent *e);

     修改为 bool  eventFilter(QObject *o, QEvent *e);

 

 继续:

 

   make[5]: Leaving directory `/root/yizhi/host/qtopia-free-2.2.0/qtopia/src/libraries/mediaplayer'
   make[4]: *** [all] Error 2
   make[4]: Leaving directory `/root/yizhi/host/qtopia-free-2.2.0/qtopia/src/libraries/mediaplayer'

 

    修改  qtopia-free-2.2.0/qtopia/src/libraries/mediaplayer/videoviewer.cpp 文件 52行

    SimpleVideoWidget::SimpleVideoWidget(QWidget *parent);

 

   修改后:

              SimpleVideoWidget(QWidget *parent);  //构造函数

 

  继续编译

 

  In file included from addressbook.cpp:40:
 ablabel.h: At global scope:
 ablabel.h:78: error: extra qualification ‘AbLabel::’ on member ‘decodeHref"

 

 解决办法:

 

    修改  qtopia-free-2.2.0/qtopia/src/applications/addressbook/ablabel.h   78行

   bool AbLabel::decodeHref(const QString& href, ServiceRequest* req, QString* pm) const;

   修改为 bool  decodeHref(const QString& href, ServiceRequest* req, QString* pm) const;

 

  10   又一处未经定义的构造函数错误提示:

 

.ui/release-shared/emaildlg.cpp: In constructor ‘EmailDialogBase::EmailDialogBase(QWidget*, const char*, bool, uint)’:
.ui/release-shared/emaildlg.cpp:65: error: no matching function for call to ‘QSizePolicy::QSizePolicy(QSizePolicy::SizeType, QSizePolicy::SizeType, int, int, bool)’
/root/yizhi/host/qtopia-free-2.2.0/qt2/include/qsizepolicy.h:93: note: candidates are: QSizePolicy::QSizePolizePolicj4

 

 

     修改  qtopia-free-2.2.0/qtopia/src/applications/addressbook/.ui/release-shared/emaildlg.cpp  文件第65行
   
    okButton = new QPushButton( this, "okButton" );
    okButton->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)3, (QSizePolicy::SizeType)0, 0, 0, okButton->sizePolicy().hasHeightForWidth() ) );
    Layout2->addWidget( okButton );

    cancelButton = new QPushButton( this, "cancelButton" );
    cancelButton->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)3, (QSizePolicy::SizeType)0, 0, 0, cancelButton->sizePolicy().hasHeightForWidth() ) );
    Layout2->addWidget( cancelButton );

 

  修改为


okButton = new QPushButton( this, "okButton" );
    okButton->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)3, (QSizePolicy::SizeType)0,okButton->sizePolicy().hasHeightForWidth() ) );
    Layout2->addWidget( okButton );

    cancelButton = new QPushButton( this, "cancelButton" );
    cancelButton->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)3, (QSizePolicy::SizeType)0,cancelButton->sizePolicy().hasHeightForWidth() ) );
    Layout2->addWidget( cancelButton );

 

 继续编译:

 

    错误提示:.ui/release-shared/camerabase.cpp:41: error: no matching function for call to ‘QSizePolicy::QSizePolicy(QSizePolicy::SizeType, QSizePolicy::SizeType, int, int, bool)’
/root/yizhi/host/qtopia-free-2.2.0/qt2/include/qsizepolicy.h:93: note: candidates are: QSizePolicy::QSizePolicy(int)

   解决办法:

 

     编辑  qtopia-free-2.2.0/qtopia/src/applications/camera/.ui/release-shared/camerabase.cpp 文件的第41行

 

 videocaptureview->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)7, 0, 0, videocaptureview->sizePolicy().hasHeightForWidth() ) );

 

修改为:

videocaptureview->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)7, videocaptureview->sizePolicy().hasHeightForWidth() ) );

 

 

    继续编译。同样是这个类型的错误,这里就不再列出了,用户可以仿照上面的方法,根据错误提示信息,自己进行修改,修改后保存,继续编译。


原文地址:http://blog.csdn.net/yimiyangguang1314/article/details/6068029

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/lizhibin1091666592/article/details/7362923

智能推荐

操作系统课程项目 OS project —— Pintos from Project 1 to Project 3_斯坦福操作系统 project3-程序员宅基地

文章浏览阅读7.7k次,点赞14次,收藏83次。Pintos Project 陪伴我们操作系统课程大半个学期了……虽然做了这么长时间,个人能力有限,pintos代码,看过的可能也就看懂了一半吧,更不用说没看过的了……但是也找到了一些有价值的资料,整理一下,供后辈们参考……关于环境的问题,最好是用ubuntu 16.04windows用户不要折腾装双系统了,特别是win10,动不动更新一下,说不定双系统就出问题了,linux..._斯坦福操作系统 project3

BDP FL NHS ester,BDP FL NHS标记蛋白质和肽的氨基活性染料_肽段染料-程序员宅基地

文章浏览阅读185次。BDPFLNHSester是一种用于488 nm通道的高级染料,是荧光素的替代品,荧光素是一种与BDPFLNHSester相同的分子。标记蛋白质和肽的氨基活性染料。虽然这种分子的吸收光谱和发射光谱保持在FAM激发和发射通道内,但这种染料提供了更好的光稳定性和出色的亮度。BODIPY-FL的荧光光谱比FAM的荧光光谱窄。当发射波长可以调谐到染料值时,这为基于单色仪的仪器提供了更好的亮度。该染料是中性的,具有低分子量,并且在共轭物中保持高量子产率。该染料是荧光素(FAM)、BODIPY-FL..._肽段染料

关于Dosbox0.74无法使用masm命令-程序员宅基地

文章浏览阅读6k次,点赞9次,收藏9次。今天尝试在dosbox里编译asm源代码文件但是提示“illegal command”,也就是非法命令开始还以为我的dosbox版本不对但是去网上查阅资料发现别人用这个版本都可以使用所以百思不得其解最后,突然发现别人文件夹中的exe程序和我的有点儿不一样看了下我的asm目录下发现自己有一个tool.rar没有解压打开看了一下,里面是masm.exe和lin..._illegal command masm

详解springBoot集成activiti7,使用actiBPM绘制流程图(二)_springboot bpmn-程序员宅基地

文章浏览阅读8k次。快速使用IDEA搭建SpringBoot项目,集成Activiti7(一)详解springBoot集成activiti7,工作流实战案例(三)1.IDEA安装actiBPM插件搜索actiBPM,然后insatlled就可以了,本文已安装,不做演示。2. 在resources下建立文件夹processes,目录结构如下:3.在processes下新..._springboot bpmn

JAVA+MYSQL可视化学生信息管理系统_学生信息管理系统mysql可视化-程序员宅基地

文章浏览阅读907次,点赞3次,收藏9次。java+mysql小程序_学生信息管理系统mysql可视化

android apkplug-程序员宅基地

文章浏览阅读161次。ApkPlug ApkPlug是一款Android系统下的模块化解决方案,可以帮助开发者以模块化方式开发和改造应用,ApkPlug为开发者从“云”和”端”两个方向提供API。ApkPlug可以帮开发者减少APK应用代码,缩小APK应用体积。ApkPlug同时支撑动态加载、应用内进行更新升级,支持第三方插件接入,为开发者开发APP减少人力和时间成本。 点豆科技自..._android apk plugin

随便推点

解析社交电商运营模式玩法的秘密?_总结会员制社交电商的运作模式对平台、对企业、分别有什么好处-程序员宅基地

文章浏览阅读208次。背景:从18年开始很多互联网大咖都在积极的宣传社交电商,谈及社交电商就衍生出很多名词:新零售、社群经济、内容电商、移动电商、垂直电商、分享经济、微商营销、O2O、智慧零售、自媒体营销、产业互联网等等。小胡带领大家回到18年从头开始分析一下:1、头部电商都在烧钱抢流量,也造成了电商网站站内本身的流量越来越贵了,大家之前做一个seo优化,或者cpc等等,都是几毛钱的,后面也是越来越贵,涨到了5-10元。推广费用的增加导致了产品本身的利润也减少了,东西越来越贵,想赚钱就越来越难,于是就有企业通过站..._总结会员制社交电商的运作模式对平台、对企业、分别有什么好处

极客大学产品经理训练营 极客时间购买课程-大作业_极客时间b端产品经理入门课-程序员宅基地

文章浏览阅读3.6k次。1. 标题作者修改历史标题:【极客时间】购买课程作者历史时间易筋创建2021-01-09易筋添加购买流程图62021-03-02易筋添加购买时序图72021-03-162. 简要描述极客时间 App, 为用户提供购买课程功能。购买的主要渠道有极客时间 App内购买,微信购买,购买返现等。3. 利益相关者 / 涉众 / 参与人及其相关利益4. 事件流:进本流程 / 扩展流程 / 异常流程基础流程用例开始浏览课程、搜索课程点击购买支付_极客时间b端产品经理入门课

11-Flutter移动电商实战-首页_屏幕适配方案和制作-程序员宅基地

文章浏览阅读767次。11-Flutter移动电商实战-首页_屏幕适配方案和制作1、flutter_ScreenUtil插件简介flutter_ScreenUtil屏幕适配方案,让你的UI在不同尺寸的屏幕上都能显示合理的布局。插件会让你先设置一个UI稿的尺寸,他会根据这个尺寸,根据不同屏幕进行缩放,能满足大部分屏幕场景。github:https://github.com/OpenFlutter/flut..._flutter使用flutter_screenutil计算后差了一点点

LOG的含义 : Mysql 之 binlog介绍_mysql binlog at 44233什么意思-程序员宅基地

文章浏览阅读1.4k次。1、什么是binlog binlog是一个二进制格式的文件,用于记录用户对数据库更新的SQL语句信息,例如更改数据库表和更改内容的SQL语句都会记录到binlog里,但是对库表等内容的查询不会记录。 默认情况下,binlog日志是二进制格式的,不能使用查看文本工具的命令(比如,cat,vi等)查看,而使用mysqlbinlog解析查看。2.binlog的作用 ..._mysql binlog at 44233什么意思

【IO流】java Io流写图片时失真(远程文件)_java io写图片-程序员宅基地

文章浏览阅读1.3k次,点赞2次,收藏3次。问题描述在测试功能的时候发现远程图片下载到本地的时候图片严重失真,在往上找的解决方案也都不适用,比如用BufferedOutputStream字节数组输出等等。在后来的排查过程中发现,在下图位置打debug进行断点拍查,输出的文件就完全没有任何问题解决方法在进行输出的时候,多加两个参数。完整代码 String uploadPath = sysSetting.getUploadPat..._java io写图片

gradle build项目时 。。is intentional, add '@EqualsAndHashCode(callSuper=false)' to your type. @Data ^_if this is intentional, add '@equalsandhashcode(ca-程序员宅基地

文章浏览阅读6k次,点赞3次,收藏5次。一、具体警告信息::15: 警告: Generating equals/hashCode implementation but without a callto superclass, even though this class does not extendjava.lang.Object. If this is intentional, add‘@EqualsAndHashCo..._if this is intentional, add '@equalsandhashcode(callsuper=false)' to your ty

推荐文章

热门文章

相关标签