嵌入式多媒体设计--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代码就行了。
作者:半山
出处:http://www.cnblogs.com/xdao/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。