您的位置:首页 > 编程语言 > Qt开发

QT4向s3c2410平台移植

2010-05-06 13:05 218 查看
在这里就不着重讲解 QT的发展和里面细节的内容,针对嵌入式linux系统来说,使用一种GUI是很常见的,那么首先就涉及移植的问题,只有再移植好的情况下再开发自己的产品。当然这个步骤不是死的,但移植确实是要做的,还要做好,过程有的时候也不是很容易的。今天我就在s3c2410的平台上移植了QT4,然后把移植出现的问题记录了下来,仅仅做个参考。
1.开发平台:ubuntu 81.0,交叉编译器版本3.4.5(arm-linux-gcc),qt-embedded-linux-opensource-src-4.4.3.tar.gz。
2.目标平台:s3c2410,320*240触摸屏 ,linux-2.6.26.5,u-boot-1.3.4
3.移植步骤如下
(1)首先配置linux内核,支持LCD驱动,然后点亮你的屏,并且支持framebuffer,具体的内核配置如下:
Device Drivers ---> Graphics support ---> <*> Support for frame buffer devices --->
<*> S3C2410 LCD framebuffer support
当然里面还涉及一些细节,这里就不一一说了,如果大家这块有问题,可以提出来!
(2)如果你想支持USB鼠标和USB键盘,只需配置内核既可:
Device Drivers ---> [*] HID Devices ---> <*> USB Human Interface Device (full HID) support

(3)编译内核进行测试。

(4)接下来我们在以上工作的基础上开始移植QT4。首先下载源码:ftp://ftp.trolltech.no/qt/source/qt-embedded-linux-opensource-src-4.4.3.tar.gz,放在你普通用户的一个目录,比如/home/yoyoili/qt4_port.解压.

(5)进入解压好的目录。

(6)然后就是很关键的配置,QT4的移植是通过配置来是否支持某种特性,比如openssl等等。那么根据你自己的需求呢进行相应的配置就可以了,这里参考网站的一篇文章进行了配置,具体如下:
./configure /
-prefix /home/yoyoili/qt4_port/qt/build / //指定安装的目录,与开发板上运行的目录一致
-release -shared /
-fast /
-pch /
-no-qt3support /
-qt-sql-sqlite /
-no-libtiff -no-libmng /
-qt-libjpeg /
-qt-zlib /
-qt-libpng /
-qt-freetype /
-no-openssl /
-nomake examples -nomake demos -nomake tools/
-optimized-qmake /
-no-phonon /
-no-nis /
-no-opengl /
-no-cups /
-no-xcursor -no-xfixes -no-xrandr -no-xrender -no-xkb -no-sm/
-no-xinerama -no-xshape /
-no-separate-debug-info /
-xplatform qws/linux-arm-g++ /
-embedded arm /
-depths 16 /
-no-qvfb /
-qt-gfx-linuxfb /
-no-gfx-qvfb -no-kbd-qvfb -no-mouse-qvfb/
-qt-kbd-usb /
-confirm-license /
-no-armfpa
这里我没有去实现触摸屏的校准,由于时间的问题,以后陆续补充完整,如果支持触摸屏在加一个:-qt-mouse-tslib。
这个过程如果涉及很多问题,一般都是你的系统缺少了某些库的问题,我的ubuntu 8.10相应的库都安装的比较齐全,没有错误,如果你是fedroa,只需要完全安装,就不会有什么问题,这个是验证过的!

(7)然后就是make && make install,编译和安装了,如果好的话,就会在你的安装目录,也就是 /home/yoyoili/qt4_port/qt/build 有相应的如下目录:bin include lib mkspecs plugins translations,大家可以看看里面的内容。这里我们关心的是一个lib,就是库文件,以后交叉编译好的程序在板子上跑起来以后都需要这些库。把所需要的库拷贝到开发板的相应的目录即可,这里比如:cp /home/yoyoili/qt4_port/qt/build/lib/libQt* /home/yoyoili/source/rootfs/home/qt/build/lib,当然有的库你可以不需要拷贝的。

(8)然后拷贝显示中文的文泉驿字体,这里比如:cp /home/yoyoili/qt4_port/qt/build/lib/fonts/wenquanyi_160_75.qpf /home/yoyoili/source/rootfs/home/qt/build/fonts (前面的路径就是编译并安装以后的目录,这个字体就是这个目录的lib/fonts下面 ,当然后面就是我们开发板根文件系统的目录)

(9)测试,我们用源码自带的程序来进行测试,比如在源码的example里有很多,你只需qmake && make就可以了,然后把可执行文件拷贝开发板上用的根文件系统。

(10)设置相应的环境变量,这个环境变量是给开发板使用的,不是给你的PC机!具体如下:
export QTDIR=/home/qt/build
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH //(否则找不到库)
export PATH=$QTDIR/bin:$PATH
export QT_QWS_FONTDIR=/home/qt/build/fonts // (否则字体无法显示)
当然如果你用触摸屏还有相关的设置,你也需要在这里添加!

(11)运行我们的程序:
./test -qws -fn /home/qt/build/fonts/wenquanyi_160_75.qpf
然后你的屏上就有了显示。

(12)然后你可以在开发板上插上你的USB鼠标就可以来操作这个小QT程序了。

(13)如果你想玩键盘,这样有意思:
设置你的console=tty0既可以操作你的开发板了,你就可以玩命令了,那么这个console的参数的指定有两种方法,一个可以通过u-boot传递,这里比如:setenv bootargs root=/dev/nfs nfsroot=192.168.1.110:/home/yoyoili/source/rootfs ip=192.168.1.120 init=/linuxrc console=tty0,另一个就是通过内核,你只需配置内核既可以:具体如下:
Boot options ---> (root=/dev/nfs nfsroot=192.168.1.2:/home/yoyoili/source/rootfs ip=192.168.1.3 init=/linuxrc console=tty0)!

(14)这里说一下可能出现的问题:
1.在编译你的QT程序的时候会有一个collect错误,应该是连接的qt4的库不是arm交叉编译工具编译的,两者连接有冲突。在file.pro中去掉对qt4库的连接即可,增加一行CONFIG -= qt,即可去掉。

2.如果出现这个问题:/lib/libQtCore.so: undefined reference to `clock_gettim
解决的办法就是在Makefile里的LFAGS后添加一个 -lrt就可以。

3.有的人用的交叉编译器是用的arm-softfloat-linux-gnu-gcc,所以在make编译的时候老是提示arm-linux-gcc找不到,解决这个问题的办法很多,一个方法就是重新制作你的交叉编译器,修改arm-softfloat.dat(好像是这个)将里面的TARGET修改为arm-linux就可以了,另一个方法就是修改QT4源码的mkspecs/qws/linux-arm-g++目录下修改qmake.config将arm-linux-gcc修改为arm-softfloat-linux-gcc,然后再make就行了。

4.当然你可以用很多工具来编译你的程序,比如qtcreator,kdevelop!

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/wuxyz/archive/2009/04/03/4041014.aspx
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: