当前位置:文档之家› Fedora10下搭建ARM开发环境QTE及移植过程

Fedora10下搭建ARM开发环境QTE及移植过程

Fedora10下搭建ARM开发环境QTE及移植过程QT 2010-09-09 17:40:48 阅读311 评论0 字号:大中小订阅说明:之前也做过QTE的安装及移植,参考网上很多例子,大部分采用的是友善之臂开发板提供的arm-linux-g++ 4.3.2编译器,这样在运行Qt可执行程序的时候经常会遇到一个致命问题就是:Segmentation Fault(段错误)而采用arm920t-eabi.tgz可以解决段错误问题,本次移植主要采用arm920t-eabi.tgz编译器。

一、安装环境:系统平台:Fedora 10,内核2.6,图形界面二、软件需求及下地地址:Qt版本qt-everywhere-opensource-src-4.6.2.tar.gz下载地址:/downloads-cn编译器:arm920t-eabi.tgz(即arm-linux-gcc-4.1.2)下载地址:/downloads/toolchains/arm920t-eabi.tgz触摸屏软件:tslib1.4下载地址:略三、环境安装过程:1、安装arm920t-eabi.tgz然后直接将arm920t-eabi.tgz解压缩到根目录,把编译器路径加入系统环境变量,以便编译时找到相关的库,运行命令:#gedit /root/.bashrc编辑/root/.bashrc文件,在最后一行加上# export CPLUS_INCLUDE_PATH=/opt/toolchains/arm920t-eabi/arm-angstrom-linux-gnueabi/include/c++:/opt/toolchain s/arm920t-eabi/arm-angstrom-linux-gnueabi/include/c++/arm-none-li nux-gnueabi#export PATH=/opt/toolchains/arm920t-eabi/bin:$PATH2、编译tslib对触摸屏支持下载,tslib1.4.tar.gz,解压到根目录后,运行autogen.sh后生成configure文件。

# ./configure --prefix=/usr/local/tslib/ --host=arm-linuxac_cv_func_malloc_0_nonnull=yes# make# make install3、qt-everywhere-opensource-src-4.6.2安装及配置将qt-everywhere-opensource-src-4.6.2.tar.gz解压到/opt/目录下得到文件qt-everywhere-opensource-src-4.6.修改qt-everywhere-opensource-src-4.6.2/mkspecs/qws/linux-arm-g++/qm ake.conf 文件(添加lts参数):QMAKE_CC = arm-linux-gcc -ltsQMAKE_CXX = arm-linux-g++ -ltsQMAKE_LINK = arm-linux-g++ -ltsQMAKE_LINK_SHLIB = arm-linux-g++ -lts这一步必须有,不然肯定出错。

配置:# ./configure \-prefix /usr/local/Trolltech/QtEmbedded-4.6.2-arm \-opensource \-confirm-license \-release -shared \-embedded arm \-xplatform qws/linux-arm-g++ \-depths 16,18,24 \-fast \-optimized-qmake \-pch \-qt-sql-sqlite \-qt-libjpeg \-qt-zlib \-qt-libpng \-qt-freetype \-little-endian -host-little-endian \-no-qt3support \-no-libtiff -no-libmng \-no-opengl \-no-mmx -no-sse -no-sse2 \-no-3dnow \-no-openssl \-no-webkit \-no-qvfb \-no-phonon \-no-nis \-no-opengl \-no-cups \-no-glib \-no-xcursor -no-xfixes -no-xrandr -no-xrender \-no-separate-debug-info \-nomake examples -nomake tools -nomake docs \-qt-mouse-tslib -I/usr/local/tslib/include -L/usr/local/tslib/lib上面划掉的蓝色内容,可以不要的,这样编辑也不会出错(虚拟机搞坏了,不得已重装,配置参数时忘了干上面的工作了,结果发现没出错)。

关于配置参数,参照一下这篇文章吧,可以用configure -embedded –help 查看。

/blog/?p=582编译:# gmake安装:# gmake install安装完成后,在/usr/local/Trolltech 目录中有QtEmbedded-4.6.2-arm 文件夹4、界面移植1)、系统通过NFS挂载文件系统,挂载目录为:/opt/filesys.将虚拟机中/usr/local/Trolltech/QtEmbedded-4.6.2-arm/lib的所有文件拷贝到/opt/pro_5.0_L137/filesys/usr/local/Trolltech/QtEmbedded-4.6.2-arm/l ib(即挂载文件系统中的/usr/local/Trolltech/QtEmbedded-4.6.2-arm/lib目录下),将Fedora10上/usr/local/tslib 中的库复制到/opt/pro_5.0_L137/filesys/usr/local中,即将/usr/local/tslib下的所有文件复制到/opt/pro_5.0_L137/filesys/usr/local文件夹下。

2)、挂载文件系统环境设置,打开/opt/pro_5.0_L137/filesys/etc/profile 添加触摸屏支持内容:exportLD_LIBRARY_PATH=/usr/local/lib:$QTDIR/lib:$LD_LIBRARY_PATH export TSLIB_ROOT=/usr/local/libexport TSLIB_TSDEVICE=/dev/input/event0export TSLIB_FBDEVICE=/dev/fb0export TSLIB_PLUGINDIR=/usr/local/lib/tsexport TSLIB_CONSOLEDEVICE=noneexport TSLIB_CONFFILE=/usr/local/etc/ts.confexport POINTERCAL_FILE=/etc/pointercalexport TSLIB_CALIBFILE=/etc/pointercalexport QWS_MOUSE_PROTO=Tslib:/dev/input/event0取消/usr/local/etc/ts.conf中的第一个注释:# module_raw input (去掉#,并且该行顶格,不顶格会出错)启动开发板,运行/usr/local/bin/ts_calibrate 进行校正触摸屏。

此时如果遇到问题,可如下方法解决问题1:./ts_calibrate: error while loading shared libraries: libts-0.0.so.0: cannot open shared object file: Error 40./ts_calibrate: error while loading shared libraries: libts-0.0.so.0: cannot open shared object file: No such file or directory解决办法:#echo $LD_LIBRARY_PATH //查看lib路径,#export LD_LIBRARY_PATH=$T_ROOT/lib问题2:ts_open: No such file or directory解决办法:#export TSLIB_TSDEVICE=/dev/input/event0 //触摸屏设备路径问题3:Couldnt open tslib config file: No such file or directory ts_config: Illegal seek解决办法:#export TSLIB_CONFFILE=$T_ROOT/etc/ts.conf问题4:Couldnt load module pthresNo raw modules loaded.ts_config: Success解决办法:#export TSLIB_PLUGINDIR=$T_ROOT/lib/ts问题5:No raw modules loaded.Ts_config: No such file or directory解决办法:修改$T_ROOT/etc/ts.conf, 至少放开一个module_raw,打开tslib-1.4/etc/ts.conf 文件,去掉其中一个modules_ raw前面的# 号,并删除空格即可并去掉前面空格5、遇到问题及解决方案1)运行Qt可执行程序需要加上–qws命令(创建framebuffer共享运行),运行时出现错误relocation error:/usr/local/Trolltech/QtEmbedded-4.6.2-arm/lib/libQtGui.so.4: symbol powf, version GLIBCXX_3.4 not defined in file libstdc++.so.6 with link time reference,此时是由于缺少与安装qte版本对应编译器的lib库的问题。

解决办法:是进入主机/opt/toolchains/arm920t-eabi/arm-angstrom-linux-gnueabi/lib目录下找到libstdc++.so.6链接的文件libstdc++.so.6.0.8(通过右键属性——〉基本,可以看到链接的文件),复制并重命名为libstdc++.so.6到/opt/pro_5.0_L137/filesys /lib文件夹下,之前别忘了将该文件夹下的libstdc++.so.6移到其它地方或重命名,如libstdc++.so.6.old。

相关主题