嵌入式多媒体设计--3搭建交叉编译器和qtopia4.4.3

一、安装交叉编译器

交叉编译器指运行在宿主机上但是编译后的程序运行在目标机上(或模拟器)的编译器。

可以通过crosstool来自己制作交叉编译器,不过曾经自己制作的麻烦经历让我放弃了

再次制作的想法,于是使用了ok6410自带的编译后的交叉编译器。

由于自带的是x86-arm的,如果你用64位的系统,可以参考我的这篇文章linuxdeepin64位安装32位软件。

二、编译qtopia4.4.3

1、按照官方的文档,连configure都没通过,于是搜索,发现是已经安装了qt的原因,

于是把qt卸载了,还是错误,只好把与qt相关的都卸载了,居然把我的vlc播放器都删除了,

不过最后两个小时后,顺利编译成功,非常高兴。

2、之后编译tslib1.4(触摸支持库),可是居然失败了,检查了一下错误信息,居然用的是

本地编译器,配置好环境后还是出错,这次提示如下:

libs/ts_fd.o: file not recognized: File format not recognized

到网上也找不到,把我折腾了一天不过第二天终于解决了,后面再说。

3、接着编译开发板上qt的helloworld,可是这次又错了

QMAKESPEC has not been set, so configuration cannot be deduced.

按照网上的说法把QMAKESPEC export一下,结果还是错了,

Failure to read QMAKESPEC conf file

接着有按网上的方法,还是错误。

可恶,文档上只是介绍了如何编译qt,却没告诉如何配置。

第二天,我把qt的环境配置好后决定再试一次,如果失败我就换32位的系统。

这次机缘巧合,我鬼使神差的切换到了root,再此编译居然成功了。

下面是我的配置保存为qtarm.sh,仅供参考:

#!/bin/bash
QTEDIR=/witech/builddir/sdk/qtopiacore/target
export PATH=$QTEDIR/bin:/usr/local/arm/4.4.1/bin:$PATH
export TOOLCHAIN=/usr/local/arm/4.4.1
export TB_CC_PREFIX=arm-linux-
export PKG_CONFIG_PREFIX=$TOOLCHAIN/arm-none-linux-gnueabi
export LD_LIBRARY_PATH=$QTEDIR/lib:$LD_LIBRARY_PATH
export QMAKESPEC=$QTEDIR/mkspecs/qws/linux-arm-g++

然后source  qtarm.sh更新环境,就可以使用qmake -project,qmake了
最后还要把qmake生成的Makefile中的CFLAGS 和 CXXFLAGS 中添加 “-fno-rtti”
make 即可编译通过。

接着我又用root编译tslib,也通过了。

我发现“Failure to read”、“file not recognized”这类的错误可能是文件权限的问题,因为我

开始是用的root来编译qt的。

三、在开发板上运行qt

按照官方文档,我又失败了,而且可笑的那个错误是正是按照官方的解决方法,结果还是错了。

我有检查了几次,同时用官方给出的测试,都是如此,后来发现原来官方少加了一个配置。

自己加上后测试,成功了。我的配置如下,最后一行是官方遗漏的。

#!/bin/bash
export PATH=/opt/Qtopia4.4.3/bin:/sbin:/usr/sbin:/bin:/usr/bin export QPEDIR=/opt/Qtopia4.4.3 export QTDIR=/opt/Qtopia4.4.3 export QT_QWS_FONTDIR=/opt/Qtopia4.4.3/lib/fonts/ export QWS_DISPLAY=LinuxFb:mmWidth76:mmHeight44:1 export QWS_MOUSE_PROTO=Tslib:/dev/input/event1 export TSLIB_CALIBFILE=/etc/pointercal export TSLIB_CONFFILE=/usr/local/tslib/etc/ts.conf export TSLIB_CONSOLEDEVICE=none export TSLIB_FBDEVICE=/dev/fb0 export TSLIB_PLUGINDIR=/usr/local/tslib/lib/ts export TSLIB_ROOT=/usr/local/tslib export TSLIB_TSDEVICE=/dev/input/event1 export TSLIB_TSEVENTTYPE=H3600 export QT_PLUGIN_PATH=/opt/Qtopia4.4.3/plugins:/opt/Qtopia4.4.3/qt_plugins/ export LD_LIBRARY_PATH=/opt/Qtopia4.4.3/lib

ok,大功告成,以后就只需移植pc上的qt代码就行了。

posted @ 2013-03-10 17:25  半山th  阅读(883)  评论(0编辑  收藏  举报