snifer

【原创】配置编译 及测试QT/Embedded 环境

0
阅读(2479)

QT/Embedded 通过Qt API 与Linux I/O 设施直接交互,成为嵌入式linux 端口。同Qt/X11 相比,

QT/Embedded 很节省内存,其不需要一个X 服务器或是Xlib 库,它在底层摈弃了Xlib,采用 framebuffer

(帧缓存)作为底层图形接口。同时,将外部输入设备抽象为keyboard 和mouse 输入事件。

QT/Embedded 的应用程序可以直接写内核缓冲帧,这可避免开发者使用繁琐的Xlib/Server 系统。今天我就给大家演示如何配置编译 及测试QT/Embedded 环境。

1、将QT/Embedded 压缩包(/UP-Magic6410/SRC/gui/目录下)拷贝到新建立的目录下并解压

[root@localhost for_arm]# tar xjvf

/UP-Magic6410/SRC/gui/qt-embedded-linux-opensource-src-4.4.0.tar.bz2 -C

/home/uptech/QT4/for_arm/

这样在实验目录的for_arm 下产生解压后的qt-embedded-linux-opensource-src-4.4.0 目录。所有QT/Embedded

环境源码都存放在此。

2、进入qt-embedded-linux-opensource-src-4.4.0 目录执行configure 文件,配置QT/Embedded 环境

[root@localhost for_arm]# cd qt-embedded-linux-opensource-src-4.4.0/

[root@localhost qt-embedded-linux-opensource-src-4.4.0]# ./configure -embedded arm

-xplatform qws/linux-arm-g++ -nomake demos -nomake examples -no-stl -no-qt3support

-no-phonon -no-svg -no-webkit -no-openssl -no-nis -no-cups -no-iconv -no-pch -no-dbus

-no-separate-debug-info -depths 8,16 -fast -little-endian -qt-mouse-linuxtp

-qt-mouse-tslib -I$PWD/../tslib1.4-install/include -L$PWD/../tslib1.4-install/lib

-prefix /usr/local/Trolltech/Qt-embedded-4.4.0

其中-prefix 参数指定QT-X11 环境的安装目录;-qt-mouse-tslib 参数指定了该QT/Embedded 环境支持触摸屏

设备;-I 与-L 参数指定了触摸屏设备的头文件以及库文件路径,当然,两个参数的指定要与实际编译tslib 库

时候安装路径为准。./configure 配置选项过长,使用该命令时候请仔细检查不要写错。Configure 的其他具

体配置用户可以通过—help 命令查看:

[root@localhost qt-embedded-linux-opensource-src-4.4.0]# ./configure --help

在输出的许可证提示符下输入“yes”同意回车即可进入QT/Embedded 库的配置过程,注意yes 大小写及全称。

3、编译QT/Embedded 库

[root@localhost qt-embedded-linux-opensource-src-4.4.0]# make

由于QT 库环境的庞大体积,编译QT/Embedded 库环境时间比较长,具体时间因机器配置而异(大约2 个小时左

右)。

4、安装QT/Embedded 库

[root@localhost qt-embedded-linux-opensource-src-4.4.0]# make install

此时便会在/usr/local/目录下产生Trolltech/ Qt-embedded-4.4.0 目录。

测试触摸屏及 QT/E 程序

1、在上述实验的 NFS 共享目录/UP-Magic6410/下建立Trolltech 目录,后续的QT/Embedded 实验都是在此目

录下共享到ARM 设备端执行QT/E 程序的。因此我们需要在该目录下搭建好QT/E 的环境,也就是拷贝编译

好的QT/E 动态库以及tslib 环境到此目录下。

[root@localhost /]# cd /UP-Magic6410/

[root@localhost UP-Magic6410]# mkdir Trolltech

[root@localhost UP-Magic6410]# ls

DOC IMG SRC Trolltech install.sh readme.txt tmp

[root@localhost UP-Magic6410]#

2、将上述实验编译好的 QT/Embedded 库环境及tslib 环境拷贝到建立的NFS 目录Trolltech 中。

拷贝QT/Embedded 库环境

[root@localhost Trolltech]# cp /usr/local/Trolltech/Qt-embedded-4.4.0/

/UP-Magic6410/Trolltech/ -arf

[root@localhost Trolltech]# ls

Qt-embedded-4.4.0

3、 拷贝 tslib 环境

[root@localhost Trolltech]# cp /home/uptech/QT4/for_arm/tslib1.4-install/lib/*

/UP-Magic6410/Trolltech/Qt-embedded-4.4.0/lib/ -a

[root@localhost Trolltech]# cp /home/uptech/QT4/for_arm/tslib1.4-install/bin/*

/UP-Magic6410/Trolltech/Qt-embedded-4.4.0/bin/ -a

[root@localhost Trolltech]# cp /home/uptech/QT4/for_arm/tslib1.4-install/etc/

/UP-Magic6410/Trolltech/Qt-embedded-4.4.0/ -a

[root@localhost Trolltech]#

4、ARM 端挂载NFS 共享目录

启动UP-Magic6410 实验系统,连好网线、串口线。通过串口终端挂载宿主机实验目录。

[root@UP_6410 yaffs]# mountnfs 192.168.1.145:/UP-Magic6410 /mnt/nfs/

5、设置环境变量 (ARM 端)

进入QT/Embedded 实验NFS 共享目录Trolltech 中

[root@UP_6410 yaffs]# cd /mnt/nfs/Trolltech/Qt-embedded-4.4.0/

[root@UP_6410 Qt-embedded-4.4.0]# ls

bin include mkspecs translations

etc lib plugins

[root@UP_6410 Qt-embedded-4.4.0]#

根据此实验目录下的目录进行ARM 端环境变量设置,如下:

[root@UP_6410 Qt-embedded-4.4.0]# export QTDIR=$PWD

[root@UP_6410 Qt-embedded-4.4.0]# export LD_LIBRARY_PATH=$PWD/lib

[root@UP_6410 Qt-embedded-4.4.0]# export TSLIB_TSDEVICE=/dev/event1

[root@UP_6410 Qt-embedded-4.4.0]# export TSLIB_PLUGINDIR=$PWD/lib/ts

[root@UP_6410 Qt-embedded-4.4.0]# export TSLIB_CONSOLEDEVICE=none

[root@UP_6410 Qt-embedded-4.4.0]# export TSLIB_CONFFILE=$PWD/etc/ts.conf

[root@UP_6410 Qt-embedded-4.4.0]# export POINTERCAL_FILE=$PWD/etc/ts-calib.conf

[root@UP_6410 Qt-embedded-4.4.0]# export QWS_MOUSE_PROTO=tslib:/dev/event1

[root@UP_6410 Qt-embedded-4.4.0]# export TSLIB_CALIBFILE=$PWD/etc/ts-calib.conf

[root@UP_6410 Qt-embedded-4.4.0]# export QT_QWS_FONTDIR=$PWD/lib/fonts

[root@UP_6410 Qt-embedded-4.4.0]# export

6、执行触摸屏校准程序(在NFS 共享目录的Qt-embedded-4.4.0/bin/目录下):

[root@UP_6410 Qt-embedded-4.4.0]# ./bin/ts_calibrate

No raw modules loaded.

ts_config: No such file or directory

[root@UP_6410 Qt-embedded-4.4.0]#

如果出现如下错误提示:

Couldnt load module pthres

No raw modules loaded.

则更改ts.conf 配置文件(在在NFS 共享目录的Qt-embedded-4.4.0/etc 目录下)选择一个输入设备,当然也可

以在宿主机端/UP-Magic6410/Trolltech/Qt-embedded-4.4.0/etc 目录下更改。

[root@UP_6410 Qt-embedded-4.4.0]# vi etc/ts.conf

内容如下:将module_raw input 一行前的“#”注释符去掉,且顶行写。

# Uncomment if you wish to use the linux input layer event interface

module_raw input

# Uncomment if you're using a Sharp Zaurus SL-5500/SL-5000d

# module_raw collie

再次执行触摸屏校准程序即可,

[root@UP_6410 Qt-embedded-4.4.0]# ./bin/ts_calibrate

xres = 640, yres = 480

程序会自动存储坐标校准信息以便应用程序使用。此时如无错误则进入5 点触摸屏校准程序并存储配置文件。

还可以进行其他触摸屏测试程序ts_test、ts_print(与ts_calibrate 同目录下)等。

提示:由于UP-Magic6410 型设备出厂已经在系统后台运行了QPE 程序,因此会对本次实验运行TSLIB 或QT/E

程序有影响,因此应先杀死该QPE 后台进程。如:

在ARM 终端中使用ps 命令查看进程:

[root@UP_6410 yaffs]# ps

356 root 0 SW< [krfcommd]

385 root 3012 S syslogd -m 0 -L

387 root 3012 S klogd

425 root 2896 S -bash

432 root 2148 S /usr/local/sbin/vsftpd

435 root 13540 S /mnt/yaffs/Qtopia/bin/qpe

444 root 8108 R /mnt/yaffs/Qtopia/bin/qss

445 root 8120 R N /mnt/yaffs/Qtopia/bin/quicklauncher

446 root 3016 R ps

会看到QPE 进程号为435,使用killall 命令杀死该进程:

[root@UP_6410 yaffs]# killall qpe

[root@UP_6410 yaffs]#

即可。

夏天好热,希望大家天天都有好心情。