飞凌嵌入式
直播中

栾新科

10年用户 519经验值
擅长:嵌入式技术
私信 关注
[技术]

S5PV210开发板Qtopia2.2.0环境搭建(三)——编译第三方库

飞凌嵌入式S5PV210开发板Qtopia2.2.0环境搭建(三)——编译第三方库

S5PV210开发板(Cortex-A8)4.1 编译

    编译qtopia-free-forlinx-2.2.0 前确认已经把您刚 才制作的/root/yizhi/ARMinclude 下的文件放到交叉编译器目录 “arm-none-linux-gnueabilibcusrinclude” 里面,所有的库文件放到交叉编译器安装目录的“arm-none-linux-gnueabilibcusrlib” 文件夹下面

另外需要注意的是用官方提供的 Qtopia2.2.0 源代码编译出来的版本,主界面的图标下会出现一条虚线,影响美观,        将ARM-qtopia-free-src-2.2.0.tar.gz解压到 /root/yizhi 文 件 夹 后(yizhi 是自己建立的文件夹),

打开qtopia-free-2.2.0/qtopia/src/qt/qconfig-qpe.h 文件,在里面增加以下内容即可解决虚线的问题:

   #define QT_NO_QWS_GFX_SPEED

修改脚本脚本里面有编译时需要的环境变量:

#gedit build


注意:编译过程中产生的状态信息将记录到当前目录下的 qtopia2.2.0Makelog 文件里面,

如果编译过程中产生了大量的错误信息,打开该文件,查找 error 关键字进行问题的定位,里面记录的信息对您很有帮助,有时焦点不会停留在出现错误的位置,这时查看日志文件就很重要了。

4.2 常见bug

4.2.1 open函数缺少必要的参数

   错误信息:

 In function ‘int open(const char*, int, ...)’,

    inlined from ‘QMemoryFileData* QMemoryFile::openData(const QString&, int, uint)’ at tools/qmemoryfile_unix.cpp:143:54:

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

  修改:

  文件路径:(此错误有两处)

  ./root/yizhi/qtopia-free-2.2.0/qt2/src/tools/qmemoryfile_unix.cpp

  ./root/yizhi/qtopia-free-2.2.0/qtopia/src/libraries/qtopia/qmemoryfile_unix.cpp

  找到:(大概在141行)

修改为:

4.2.2缺少头文件错误

错误信息:

../include/qmap.h:107:13: error: ‘ptrdiff_t’ does not name a type

../include/qmap.h:223:13: error: ‘ptrdiff_t’ does not name a type

../include/qvaluelist.h:88:13: error: ‘ptrdiff_t’ does not name a type

../include/qvaluelist.h:164:13: error: ‘ptrdiff_t’ does not name a type

make[2]: *** [.obj/release-shared-mt/qapplication_x11.o] Error 1

修改方法:

搜索到qmap.h和qvaluelist.h文件后加上:

#include  

搜索文件命令: find –name “qmap.h”   

4.2.3 使用未定义的类

错误信息:

/root/yizhi/qtopia-free-2.2.0/qt2/include/qwindowsystem_qws.h:230: error: 'QWSInputMethod' has not been declared

/root/yizhi/qtopia-free-2.2.0/qt2/include/qwindowsystem_qws.h:237: error: 'QWSGestureMethod' has not been declared

make[1]: *** [allmoc.o] Error 1

修改:

#cd /root/yizhi/qtopia-free-2.2.0/qt2/src/kernel

#gedit qwindowsystem_qws.h

在前面增加以下两行

class QWSInputMethod;

class QWSGestureMethod;

保存退出,继续编译

4.2.4缺少uuid库

Creating pngscale...make[1]: Entering directory `/root/yizhi/qtopia-free-2.2.0/qtopia/util/pngscal'

.................................................................make[1]: *** [../../bin/pngscale] Error 1

make[1]: Leaving directory `/root/yizhi/qtopia-free-2.2.0/qtopia/util/pngscal'

Failed to make pngscale

修改方法:

apt-get install  uuid-dev  

4.2.5缺少系统头文件

错误信息:

kernel/qpixmapcache.cpp:125: fatal error: asm/page.h: No such file or directory

compilation terminated.

make[1]: *** [tmp/release-shared-linux-arm-g++-no-keypad/kernel/qpixmapcache.o] Error 1

make[1]: Leaving directory `/root/yizhi/qtopia-free-2.2.0/qt2/src'

修改:

路径(两个地方):

/root/yizhi/qtopia-free-2.2.0/qt2/src/kernel/qpixmapcache.cpp

./root/yizhi/qtopia-free-2.2.0/dqt/src/kernel/qpixmapcache.cpp

第125行

修改为:

#define PAGE_SHIFT12

#define PAGE_SIZE(1UL << PAGE_SHIFT)

#define PAGE_MASK(~(PAGE_SIZE-1))

//#include//PAGE_SIZE,PAGE_MASK,PAGE_ALIGN

这样修改是因为新的 Linux 内核源代码中已经不包含该头文件了。

4.2.6 this指针

错误信息:

root/yizhi/qtopia-free-2.2.0/qt2/include/qvaluestack.h:57:6: error: cannot convert ‘QValueList::Iterator {aka QValueListIterator}

/root/yizhi/qtopia-free-2.2.0/qt2/include/qvaluestack.h: In member function ‘T QValueStack::pop() [with T = QString]’:

xml/qxml.cpp:2532:57:   instantiated from here

/root/yizhi/qtopia-free-2.2.0/qt2/include/qvaluestack.h:57:6: error: cannot convert ‘QValueList::Iterator {aka QValueListIterator}’ to ‘const char*’ for argument ‘1’ to ‘int remove(const char*)’

make[1]: *** [tmp/release-shared-linux-g++/xml/qxml.o] Error 1

修改:

路径:

./root/yizhi/qtopia-free-2.2.0/qt2/src/tools/qvaluestack.h(57行)

将 remove( this->fromLast() );改为 this->remove( this->fromLast() );

保存退出

4.2.7 缺少文件

错误信息:

../../../include/qtopia/custom-qtopia.h:1: fatal error: ../../src/libraries/qtopia/custom-linux-arm-g++.h: No such file or directory

compilation terminated.

make[5]: *** [.obj/release-shared/qpeapplication.o] Error 1

修改:

路径:

/yizhi/qtopia-free-2.2.0/qtopia/src/libraries/qtopia

进入该路径后执行以下命令:

Cp custom-linux-ipaq-g++.cpp custom-linux-arm-g++.cpp

cp custom-linux-ipaq-g++.h  custom-linux-arm-g++.h

4.2.8一类出现较多的错误

4.2.8.1

错误信息:  

 qdawg.cpp:294: error: extra qualification 'QDawgPrivate::' on member 'QDawgPrivate'

修改:

路径:

./root/yizhi/qtopia-free-2.2.0/qtopia/src/libraries/qtopia/qdawg.cpp(294行)

去掉'QDawgPrivate::'  

4.2.8.2  

错误信息:

thumbnailview_p.h:81: error: extra qualification 'ThumbnailItem::' on member 'paintItem'

修改:

路径:

/root/yizhi/qtopia-free-2.2.0/qtopia/src/libraries/qtopia2/thumbnailview_p.h(81行)

去掉'ThumbnailItem::'

4.2.8.3  

错误信息:

abtable_p.h:276: error: extra qualification 'PhoneTypeSelector::' on member 'addType'

修改:

路径:

/root/yizhi/qtopia-free-2.2.0/qtopia/src/libraries/qtopiapim/abtable_p.h(276行)

去掉'PhoneTypeSelector::'

4.2.8.4

错误信息:

numberentry_p.h:106: error: extra qualification 'NumberEntryDialog::' on member 'eventFilter'

修改:

路径

/root/yizhi/qtopia-free-2.2.0/qtopia/src/libraries/qtopiapim/numberentry_p.h(106行)

去掉'NumberEntryDialog::'

4.2.8.5  

错误信息:

videoviewer.cpp:52: error: extra qualification 'SimpleVideoWidget::' on member 'SimpleVideoWidget'

修改:

./root/yizhi/qtopia-free-2.2.0/qtopia/src/libraries/mediaplayer/videoviewer.cpp (52行)

去掉'SimpleVideoWidget::'

4.2.8.6

错误信息:

ablabel.h:78: error: extra qualification 'AbLabel::' on member 'decodeHref'

修改:

路径:

/root/yizhi/qtopia-free-2.2.0/qtopia/src/applications/addres***ook/ablabel.h(78行)

去掉'AbLabel::'

4.2.8.7

错误信息:

minefield.h:105: error: extra qualification 'MineField::' on member 'setState'

minefield.h:106: error: extra qualification  

'MineField::' on member 'placeMines

修改:

路径:

./root/yizhi/qtopia-free-2.2.0/qtopia/src/games/minesweep/minefield.h(105 106行)

去掉'MineField::'

4.2.8.8

buttoneditordialog.h:56: error: extra qualification 'ButtonEditorDialog::' on member 'actionFor'

修改:

路径:

./root/yizhi/qtopia-free-2.2.0/qtopia/src/settings/buttoneditor/buttoneditordialog.h(56行)

去掉'ButtonEditorDialog::'

4.2.8.9  

packagewizard.h:106: error: extra qualification 'PackageWizard::' on member 'current'  

修改:

./root/yizhi/qtopia-free-2.2.0/qtopia/src/settings/qipkg/packagewizard.h(106行)

去掉'PackageWizard::'

4.2.8.10

keyboard.h:60: error: extra qualification 'KeyboardPicks::' on member 'KeyboardPicks'

修改:

路径:

./root/yizhi/qtopia-free-2.2.0/qtopia/src/plugins/inputmethods/keyboard/keyboard.h(60行)

去掉~ KeyboardPicks前面的'KeyboardPicks::'

4.2.8.11

polished.h:58: error: extra qualification 'PolishedDecoration::' on member 'drawBlend'

修改:

路径:

./root/yizhi/qtopia-free-2.2.0/qtopia/src/plugins/decorations/polished/polished.h(58行)

去掉'PolishedDecoration::'

4.2.8.12

inputmethods.cpp:86: error: extra qualification 'IMToolButton::' on member 'IMToolButton'

修改:

路径:

./root/yizhi/qtopia-free-2.2.0/qtopia/src/server/inputmethods.cpp(86行)

去掉'IMToolButton::'

4.2.9类型转换错误

4.2.9.1

backend/vobject.cpp:419: error: invalid conversion from 'const char*' to 'char*'

修改:

./root/yizhi/qtopia-free-2.2.0/qtopia/src/libraries/qtopia/backend/vobject.cpp(419行)

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

4.2.9.2

wavplugin.cpp:435: error: invalid conversion from 'const char*' to 'char*'

修改:

/root/yizhi/qtopia-free-2.2.0/qtopia/src/plugins/codecs/wavplugin/wavplugin.cpp(435行)

改为:char *ext = (char *)strrchr( path.latin1(), '.' );

4.2.10库文件位置

/root/yizhi/qtopia-free-2.2.0/qtopia/lib/libqte.so: undefined reference to `ts_read_raw'

/root/yizhi/qtopia-free-2.2.0/qtopia/lib/libqte.so: undefined reference to `ts_open'

/root/yizhi/qtopia-free-2.2.0/qtopia/lib/libqte.so: undefined reference to `ts_fd'

/root/yizhi/qtopia-free-2.2.0/qtopia/lib/libqte.so: undefined reference to `ts_config'

/root/yizhi/qtopia-free-2.2.0/qtopia/lib/libqte.so: undefined reference to `ts_close'

/root/yizhi/qtopia-free-2.2.0/qtopia/lib/libqte.so: undefined reference to `ts_read'

修改:

把/usr/local/tslib下的相关库

libts-0.0.so.*类

拷到/usr/local/arm/arm-2009q3/arm-none-linux-gnueabi/libc/lib下面

以上是在飞凌嵌入式S5PV210 OK210开发板上的操作。


更多回帖

×
20
完善资料,
赚取积分