qt 移植

http://www.qter.org/?page_id=161


qt4版本:qt-embedded-linux-opensource-src-4.4.3.tar.gz(可到trolltech的ftp下载)

tslib 版本: tslib-1.4.tar.gz


一 触摸屏驱动移植
    1. 复制s3c2410_ts.c到drivers/input/touchscreen
    2. 修改 Kconfig,增加如下配置

     config TOUCHSCREEN_S3C2410
        tristate "Samsung S3C2410 touchscreen input driver"
        depends on ARCH_S3C2410 && INPUT && INPUT_TOUCHSCREEN
        help
          Say Y here if you have the s3c2410 touchscreen.

          If unsure, say N.

          To compile this driver as a module, choose M here: the
          module will be called s3c2410_ts.

    3. 修改Makefile,增加如下
    obj-$(CONFIG_TOUCHSCREEN_S3C2410) += s3c2410_ts.o

    4. make menuconfig  
      选中 Samsung S3C2410 touchscreen input driver
          (并在内核查看是否支持LCD驱动、framebuffer
              在界面中找到Graphics support
              进入查看Support for framebuffer devices 和 S3C2410 LCD framebuffer support两个选项是否被选中,选中代表内核已支持。                 否则选中两个选项 )

      make zImage
      cp  arch/arm/boot/zImage    /mnt/tftp

二 . 往文件系统中移植tslib  
    
     
  注释: 因为qt-embedded交叉编译时需要用到tslib的头文件和库,所以需要先交叉编译tslib
  1  拷贝“项目代码\tslib源码”目录下的tslib-1.4.tar.gz到linux系统
  
  2 # tar -zxvf tslib-1.4.tar.gz
     # cd tslib-1.4
     # ./autogen.sh
     这一步需要安装一些工具,如:在ubantu系统下可以执行:sudo apt-get install automake 和 apt-get libtool
 
3 执行autogen.sh脚本所生成的Makefile文件
    请打入以下命令: 
     echo "ac_cv_func_malloc_0_nonnull=yes" >$ARCH-linux.cache
     ./configure --host=arm-softfloat-linux-gnu  --prefix=/home/linux/tslib --cache-file=$ARCH-linux.cache
     --host是指你的交叉编译器的前最;例如:你的交叉编译器是arm-linux-gcc,则--host=arm-linux.如果是arm-softfloat-linux-gnu-gcc
     则--host=arm-softfloat-linux-gnu
   
     --prefix 是你执行make install 的时候编译后生成的可执行文件和库文件以及配置文所安装的目录;
    configure文件下还有好多选项,你可以执行./configure --help 来进行选择其他项,不过在这里这些选项就够了。

4 #make
   #make install

5 把指定安装目录下的mytslib的文件都copy到你所挂载的根文件下
   #cp -rf /home/linux/tslib/*    /rootfs/tslib

6 修改/rootfs/tslib下的etc目录中ts.conf文件
   #vi ts.conf  将第二行的#module_raw input修改成module_raw input 注意一定要顶格写否则程序执行时会发生读取ts.conf错误

7 启动你的开发板
   在终端上设置一下环境变量:
        export TSLIB_ROOT=/mytslib
        export TSLIB_TSDEVICE=/dev/input/event1
        export LD_LIBRARY_PATH=/mytslib/lib:$LD_LIBRARY_PATH
        export QWS_SIZE=320x240
        export TSLIB_FBDEVICE=/dev/fb0
        export TSLIB_PLUGINDIR=/mytslib/lib/ts
        export TSLIB_CONSOLEDEVICE=none
        export TSLIB_CONFFILE=/mytslib/etc/ts.conf
        export POINTERCAL_FILE=/etc/pointercal
        export QWS_MOUSE_PROTO=Tslib:/dev/input/event1
        export TSLIB_CALIBFILE=/etc/pointercal
        export QWS_DISPLAY="LinuxFb:mmWidth100:mmHeight130:0"
        export TSLIB_TSEVENTTYYPE=H3600

        为了实现Tslib的正确运行,需要对如下的Tslib的环境变量进行配置:
        TSLIB_TSDEVICE  //触摸屏设备文件名。
        TSLIB_CALIBFILE  //校准的数据文件,由ts_calibrate校准程序生成。
        SLIB_CONFFILE  //配置文件名。
        TSLIB_PLUGINDIR //插件目录
        TSLIB_CONSOLEDEVICE //控制台设备文件名
        TSLIB_FBDEVICE  //设备名
    以上环境变量在实际开发中的实际配置可以根据实际情况决定。而这些指定的设备节点一定要和你的开发板上的/dev目录下的设备节点相对应。
 为了不浪费时间我们把上面的这些设置写入一个脚本里面:参见5.6节

8 就可以运行mytslib/bin下的测试文件,如ts_calibrate校准程序。

注释:一定要把pointercal 备份一下

三 .  Qt4 embedded 在S3C2410上的移植

1  将QtEmbeded 源码包解压后,把configsh文件考到解压后的目录中,可以根据实际情况修改configsh文件中第一行制定的安装目录
    注释:安装的路径要先存在,如:/home/linux/qt4_port/qt/build
    ./configsh

   (configsh脚本内容如下:

#!/bin/sh

./configure -prefix /home/linux/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 \
 -little-endian \
 -qt-mouse-tslib -I/home/linux/tslib/include -L/home/linux/tslib/lib

make && make install

 cp /home/linux/qt4_port/qt/  /home/yw/       -fr

这个时候在指定的安装目录会出现如下目录:bin include lib mkspecs plugins translations

2   将开发机下的linux-2.6.29文件系统用nfs挂载到开发板上(开发板上/mnt/udisk目录下为可写),

      mount –t nfs –o nolock 192.168.1.179:/home/yw  /mnt/udisk
   
      cd /mnt/appfs
      mkdir  -p   qt/build/lib 
      mkdir - p   qt/build/fonts     
      cp /mnt/udisk/qt/build/lib/libQt*.so  /mnt/appfs/qt/build/lib  
      注释:只需拷贝.so结尾的库过去,其余如 .so.4 ,.so.4.4.3的建立软链接,以减小体积
                      例:    ln libQTGui.so -s  libQtGui.so.4
                                 ln libQTGui.so -s  libQtGui.so.4.4.3
 

     cp /mnt/udisk/qt/build/lib/fonts/wenquanyi_160_75.qpf /mnt/appfs/qt/build/fonts/     
      注释:拷贝字体       
      
3  在开发板上设置环境变量

       export QTDIR=/mnt/appfs/qt/build
       export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
       export PATH=$QTDIR/bin:$PATH 
       export QT_QWS_FONTDIR=/mnt/appfs/qt/build/fonts

注释: 最好把这些环境变量设置直接加到 /etc/profile 里去

4  用qt编一个helloworld 程序进行测试。使用qmake、make对程序进行编译。

    注意:一定要用qtembed安装目录下bin/下面的qmake

    /home/linux/qt4_port/qt/build/bin/qmake  –project

    /home/linux/qt4_port/qt/build/bin/qmake

     make

    注释:若出现
 /home/linux/qt4_port/qt/build/lib/libQtCore.so: undefined reference to `clock_gettime' 
        类似错误,请在Makefile 里的LIBS 后面加上 -lrt   
          
 
5 最后运行helloworld程序

./helloworld  -qws

注释:加 -qws,是因为字体
就可以看到界面了。


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值