QT4向s3c2410平台移植

在这里就不着重讲解 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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值