移植QtEmbedded 4.6.3 tslib1.4 到 S3C2440

2023-09-04  

1、下载源码包:

到QT官网下载最新版QT FOR EMBEDDED

下载最新版tslib1.4

 

2、配置交叉编译环境

下载交叉编译工具arm-linux-gcc 4.3.2(交叉编译工具的版本,请根据开发板中系统内核编译时使用的版本进行确定,我使用的mini2440内核采用此版本交叉编译器编译所以选用此编译器)

在命令行模式下执行

export PATH=/usr/local/arm/4.3.2/bin:$PATH

建议写成脚本setcrossenv.sh方便以后执行

 

3、交叉编译tslib1.4

A、安装编译过程需用到的程序
        root@hrixin-desktop:/home/hrixin# apt-get install autoconf(或autoconf2.13)
        root@hrixin-desktop:/home/hrixin# apt-get install automake
        root@hrixin-desktop:/home/hrixin# apt-get install libtool

 

 B、配置编译
        root@hrixin-desktop:/work/qt# tar xzvf tslib-1.4.tar.gz
        root@hrixin-desktop:/work/qt# cd tslib
        生成./configure
        root@hrixin-desktop:/work/qt/tslib# source autogen.sh

       注意:此步会导致交叉编译器环境变量失效,请一定检查交叉编译器环境变量是否设置,没有的话执行步骤2
        root@hrixin-desktop:/work/qt/tslib# ./configure --prefix=/usr/local/tslib/ --host=arm-linux ac_cv_func_malloc_0_nonnull=yes
        root@hrixin-desktop:/work/qt/tslib# make

 

这里出现错误:error: call to ‘__open_missing_mode’ declared with attribute error: open with O_CREAT in second argument needs 3 arguments

解决方法如下:

因为使用open函数的时候,如果在第二个参数中使用了 O_CREAT,就必须添加第三个参数:创建文件时赋予的初始权限。而在gcc-3.3.6/gcc/的collect2.c文件中有漏掉第三个参数的错误,而gcc-4.3对语法错误的检查严格是出了名的(4.1就不会因此错误退出),所以就退出了。

227,229行 cal_fd = open ("/etc/pointercal", O_CREAT | O_RDWR,0777);

 

C、安装
        root@hrixin-desktop:/work/qt/tslib# make install-strip //生成瘦身应用程序和库

      提示: 安装完成后请到/usr/local/tslib/bin目录下使用file 命令查看应用程序版本是否为arm版 如果显示arm说明交叉编译成功,否则显示x86,此时需要重新设置环境变量,重新配置,生成makefile重新make

修改/usr/local/tslib/etc/ts.conf  把第二行前面的注释去掉
        打包

 root@hrixin-desktop:/usr/local# tar czvf tslib.tar.gz tslib

    D、复制到U盘中
        以备拷贝到开发板中使用

 

E、设置环境变量,校准触摸屏。
        在天开板终端建立脚本文件,并执行:
        export TSLIB_ROOT=/usr/local/tslib  #tslib所在路径
        export TSLIB_TSDEVICE=/dev/input/event0  #指定触摸屏设备节点文件
        export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf #指定TSLIB配置文件的位置
        export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts #指定触摸屏插件所在路径
        export TSLIB_CALIBFILE=/etc/pointercal  #指定触摸屏校准文件pintercal的存放位置
        export TSLIB_FBDEVICE=/dev/fb0 #指定帧缓冲设备
        export QWS_MOUSE_PROTO=Tslib:/dev/input/event0

        注意:触摸屏的前提是你的触摸屏驱动已经写好,并加载进了内核.
        你可以测试有没有加载触摸屏驱动,cat /dev/input/event0(这只是我的板子上的触摸屏) ,
        点击触摸屏,看终端有无显示,若有则表明正确。
       
        在开发板/usr/local/tslib/bin目录下执行校准触摸屏程序:
        [root@FriendlyARM bin]# ./ts_calibrate
        可以运行此目录下的其他程序进行测试。
       
    至此,触摸屏程序能顺利运行,接下来移植QtEmbedded-4.5.2,设置好环境变量。

 

 

 

 

6、编译安装QtEmbedded-4.5.2-arm版本

    A、解压
    root@hrixin-desktop:/work/qte# tar xjvf qt-embedded-linux-opensource-src-4.5.2.tar.bz2
    root@hrixin-desktop:/work/qte# mv qt-embedded-linux-opensource-src-4.5.2 qt-embedded-linux-opensource-src-4.5.2-arm
    root@hrixin-desktop:/work/qte# cd qt-embedded-linux-opensource-src-4.5.2-arm

    B、配置编译:

   ./configure –h 查看配置选项  中文翻译见这里

./configure -prefix /usr/local/QtEmbedded-arm /

-embedded arm /

-release /

-opensource /

-fast /

-no-accessibility /

-no-scripttools /

-no-mmx /

-no-multimedia /

-no-svg /

-no-webkit /

-no-3dnow /

-no-sse /

-no-sse2 /

-silent /

-qt-libpng /

-qt-libjpeg /

-no-libmng /

-no-libtiff /

-no-multimedia /

-make libs -nomake tools -nomake examples -nomake docs -nomake demo /

-no-nis -no-cups -no-iconv -no-dbus -no-openssl /

-xplatform qws/linux-arm-g++ /

-little-endian /

-qt-freetype -depths 16,18 -qt-gfx-linuxfb -no-gfx-transformed -no-gfx-multiscreen /

-no-gfx-vnc /

-no-gfx-qvfb /

-qt-kbd-linuxinput /

-no-glib /

-qt-mouse-tslib /

-I /usr/local/tslib/include /

-L /usr/local/tslib/lib /

    注意这个目录要跟你的tslib安装目录相同!!!

 

root@hrixin-desktop:/work/qte/qt-embedded-linux-opensource-src-4.5.2-arm# make
   
    C、安装到/usr/local/Trolltech/QtEmbedded-4.5.2-arm目录下:
    root@hrixin-desktop:/work/qte/qt-embedded-linux-opensource-src-4.5.2-arm# make install

    在目录/usr/local/QtEmbedded-arm下创建脚本文件


建立脚本文件

    root@hrixin-desktop:/work/root_qtopia/usr/local/Trolltech/QtEmbedded-4.5.2-arm# vim setenv.sh

    输入以下内容:(把设置tslib环境变量的脚本文件内容,也添加进来)

    #!/bin/sh

export TSLIB_ROOT=/usr/local/tslib  #tslib所在路径

export TSLIB_TSDEVICE=/dev/input/event0  #指定触摸屏设备节点文件

export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf #指定TSLIB配置文件的位置

export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts #指定触摸屏插件所在路径

export TSLIB_CALIBFILE=/etc/pointercal  #指定触摸屏校准文件pintercal的存放位置

export TSLIB_FBDEVICE=/dev/fb0 #指定帧缓冲设备

export QWS_MOUSE_PROTO=Tslib:/dev/input/event0 #第一个,指明要使用tslib这个驱动>,对应的设备名字是/dev/ts

export TSLIB_CONSOLEDEVICE=none  #tslib运行需要的控制台,这里就是LCD屏幕 ,设定控

制台设备为none,否则默认为/dev/tty

export QTDIR=/usr/local/QtEmbedded-arm

export QPEDIR=/usr/local/QtEmbedded-arm

export LD_LIBRARY_PATH=$QTDIR/lib:$TSLIB_ROOT/lib:/usr/local/lib:$LD_LIBRARY_PATH

 

    D、打包编译安装好的QtEmbedded库文件:
    root@hrixin-desktop:/usr/local/# tar czvf QtEmbedded-arm.tar.gz QtEmbedded-arm

    E、建立脚本文件:setenv_arm.sh,输入以下内容:
    export QTEDIR=/usr/local/QtEmbedded-arm
    export PATH=/usr/local/QtEmbedded-arm/bin/:$PATH
    export LD_LIBRARY_PATH=/usr/local/QtEmbedded-arm/lib/:$LD_LIBRARY_PATH
   
    F、编译ARM版QT应用程序前,先执行此脚本文件:
    root@hrixin-desktop:/usr/local/Trolltech/QtEmbedded-4.5.2-arm# source setenv-arm.sh

    编译calculator
    root@hrixin-desktop:/work/qt/qt-embedded-linux-opensource-src-4.5.2-arm/examples/widgets/calculator# qmake

    root@hrixin-desktop:/work/qt/qt-embedded-linux-opensource-src-4.5.2-arm/examples/widgets/calculator# make    

 

7、使用U盘,把编译好的库文件复制到相关目录下。

    A、此处省略(u盘挂载拷贝)

 

    B、把打包好的库文件:QtEmbedded-arm.tar.gz复制到/work/root_qtopia/usr/local/目录下

    root@hrixin-desktop:/work/root_qtopia/usr/local/Trolltech# tar xzvf QtEmbedded-arm.tar.gz

    root@hrixin-desktop:/work/root_qtopia/usr/local/Trolltech# cd QtEmbedded-arm/

 

    C、将6-F中编译好的calculator可执行文件到开发板中:

 

    D、至此,启动后,开发板串口终端执行脚本文件(/usr/local/QtEmbedded-arm/setenv.sh),设置好环境变量。

    检查环境变量是否成功:

    [root@FriendlyARM QtEmbedded-4.5.2-arm]# echo $QTDIR

    /usr/local/QtEmbedded-arm

    成功!

    如果没有输出,则失败。同样的方法检查其他两个环境变量。

 

    E、运行calculator

    [root@FriendlyARM QtEmbedded-4.5.2-arm]# ./calculator -qws &


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。