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 &