嵌入式学习---------QT的移植及测试方法

感谢老房老师的资料,整理及遇到的问题整理如下:

编辑环境:Ubantu 11.04   arm-linux-gcc 4.3.2    ok 6410开发板

1、首先编译移植tslib1.4


1)解压缩tslib1.4.tar.gz(可以从我的资源里面下载)

        tar xzvf tslib1.4.tar.gz

        cd tslib

(2) ./autogen.sh   // 用于生产configure

(3) ./configure --prefix=/usr/local/tslib/  --host=arm-linux ac_cv_func_malloc_0_nonnull=yes

(4) make

(5) make install


编译和安装后在主机的/usr/local/tslib目录下可以看到编译好的程序和库。

(6)修改/usr/local/tslib/etc目录下的ts.conf文件,将module_raw input前面的注释和空格去掉否则会出现一些莫名的错误!

2、编译QT

(1)网上下载qt-everywhere-opensource-src-4.7.3.tar.gz(也可以从我这里下载)

将qt-everywhere-opensource-src-4.7.3.tar.gz压缩包解压

tar xzvf qt-everywhere-opensource-src-4.7.3.tar.gz

cd qt-everywhere-opensource-src-4.7.3


(2)配置QT(可以在这里对QT进行裁剪)千万要仔细看别打错了!

./configure -opensource -confirm-license -release -shared -embedded arm -xplatform qws/linux-arm-g++ -depths 4,8,16,18,24,32 -fast -optimized-qmake -qt-sql-sqlite -qt-libjpeg -qt-zlib -qt-libpng -qt-freetype -little-endian -host-little-endian -no-qt3support -no-libtiff -no-libmng -no-opengl -no-mmx -no-sse -no-sse2 -no-3dnow -no-openssl -no-webkit -no-qvfb -no-phonon -no-nis -no-cups -no-glib -no-xcursor -no-xfixes -no-xrandr -no-xrender -no-separate-debug-info -nomake examples -nomake tools -nomake docs -qt-mouse-tslib -I/usr/local/tslib/include -L/usr/local/tslib/lib -D__ARM_ARCH_5TEJ__

【备注】:

进行编译配置;

-opensource

-confirm-license

-release

-shared

-embeddedarm

-xplatform

qws/linux-arm-g++(利用arm下的编译器进行编译否则无法在板子上运行)

-depths4,8,16,18,24,32

-fast

-optimized-qmake     (生成arm下的qmake)

以下为加入的一些插件

-qt-sql-sqlite     (加入qt下的数据库)

-qt-libjpeg        ( jpeg图片)

-qt-zlib             (数据压缩)

-qt-libpng         (png形式的图片)

-qt-freetype      

(FreeType库是一个完全免费(开源)的、高质量的且可移植的字体引擎)
-little-endian   (小端存储)

-host-little-endian    (主机小端存储)

去掉以下插件因为设计到ARM开发板是否支持的问题

-no-qt3support  (不支持qt3)

-no-libtiff           (去掉读写标签图像文件格式的库)

-no-libmng         (制作一些动画的库)

-no-opengl         (OpenGL是个专业的图形程序接口,是一个功能强大,调用方便的底层图形库,此处不用它)

-no-mmx              (多媒体扩展用于图形描绘)

-no-sse               (SSE是指令集的简称,它包括70条指令,其中包含单指令多数据浮点计算、以及额外的SIMD整数和高速缓存控制指令)

-no-sse2             (SIMD 流技术扩展 2或数据流单指令多数据扩展指令集 2)指令集)

-no-3dnow         (3Dnow指令集技术其实就是21条机器码的扩展指令集)

-no-openssl         (为网络通信提供安全及数据完整性的一种安全协议)

-no-webkit           (WebKit 是一个开源的浏览器引擎)

-no-qvfb            ( Qvfb是为qtopia做的一个虚拟frambuffer的应用程序,它的最终目的就是把qtopia应用程序运行的的结果显示在qvfb上(实际中是要通过linux的   

frambuffer驱动显示在lcd屏上的),并提供键盘、鼠标的外设仿真。从而方便研发阶段,用户在pc端就可以完成qtopia的调试工作,极大的提高了工作效率。 )

-no-phonon         (音频播放的依赖库里面有很多直接可以控制音频播放的函数,做过播放器的人肯定熟悉)

-no-nis                   (一种类似防火墙的工具网上说是诺顿网络安全特警简称)

 -no-cups           (CUPS(Common UNIX Printing System)是Fedora Core3中支持的打印系统,它主要是使用IPP(Internet Printing Protocol)来管理打印工作及队列)

-no-glib   (用于GTK 开发环境)

-no-xcursor  (不清处用途,应该是一种软件依赖的文件)

-no-xfixes   (XFixes is an X window system extension which makes useful additions to the X11 protocol)

-no-xrandr   (窗口大小分辨率的调整)

-no-xrender

-no-separate-debug-info

-nomakeexamples

-nomaketools

-nomakedocs


设置 tslib为鼠标驱动、校正

-qt-mouse-tslib

-I/usr/local/tslib/include

-L/usr/local/tslib/lib


支持 arm体系结构,6410:-D__ARM_ARCH_5TEJ__

2440/10:-D__ARM_ARCH_4T__


-D__ARM_ARCH_4T__



(3)修改源代码

修改qt-everywhere-opensource-src-4.7.3/mkspecs/qws/linux-arm-g++/qmake.conf 文件(添加lts参数):

QMAKE_CC = arm-linux-gcc -lts

QMAKE_CXX = arm-linux-g++ -lts

QMAKE_LINK = arm-linux-g++ -lts

QMAKE_LINK_SHLIB = arm-linux-g++ -lts

修改qt-everywhere-opensource-src-4.7.3/src/3rdparty/freetype/include/freetype/config/ftconfig.h

将"orr %0, %2, lsl #16/n/t" /* %0 |= %2 << 16 */

修改为 "orr %0, %0, %2, lsl #16/n/t" /* %0 |= %2 << 16 */

意思是加一个%0在%2前面。


(4) make

(5) make install

即可将QT安装在/usr/local/Trolltech/QtEmbedded-4.7.3-arm

(6)准备中文字体,下载文泉驿字体库

将文泉驿字体库拷贝到QtEmbedded-4.7.3-arm/lib/fonts;

3、加到开发板根文件系统

(1)拷贝根文件系统/lib需要的库(具体与版本有关,你可以试一个QT程序看提示缺少什么)一般加入这些就行了:



这些库可从arm-none-linux-gnueabi安装目录下得到libstdc++那两个在目录的libc /usr/lib 中

(2)拷贝tslib、QT相关库到开发板根文件系统

将安装的tslib目录拷贝到开发板根文件系统的/usr/local;

将安装的QT目录QtEmbedded-4.7.3-arm拷贝到开发板根文件系统的/usr/local/Trolltech;

(3)创建QT配置文件

根文件系统的/etc目录下创建一名为profile的文件,内容如下:

export QTDIR=/usr/local/Trolltech/QtEmbedded-4.7.3-arm

export T_ROOT=/usr/local/tslib

export PATH=$QTDIR/bin:$PATH

export TSLIB_CONSOLEDEVICE=none

export TSLIB_FBDEVICE=/dev/fb0

export TSLIB_TSDEVICE=/dev/event0

export TSLIB_PLUGINDIR=$T_ROOT/lib/ts

export TSLIB_CONFFILE=$T_ROOT/etc/ts.conf

export TSLIB_CALIBFILE=/etc/pointercal

export QWS_MOUSE_PROTO=tslib:/dev/event1

export LD_LIBRARY_PATH=$T_ROOT/lib:$QTDIR/lib

注意TSLIB_TSDEVICE、QWS_MOUSE_PROTO指定的设备与具体开发板内核相关,可能与上面不同;

(4)采用nfs方式挂载根文件系统;

(5)超级终端中输入:/

/usr/local/tslib/bin/ts_calibrate

进行触摸屏校正;

(6)编写程序或使用示例程序,验证下

编写一个qt程序,然后利用arm-gcc进行编译,比如你的安装的QT在/usr/local/Trolltech/QT-EMbedded-4.7.3-arm下

命令:

/usr/local/Trolltech/QT-EMbedded-4.7.3-arm/bin/qmake  -project    生成.pro

/usr/local/Trolltech/QT-EMbedded-4.7.3-arm/bin/qmake        生成make

make          生成可执行文件

然后拷贝到根文件系统中比如我的是放在根文件系统的/usr/local下

则    进入目录 ./*****  -qws  -font wenquanyi

即可运行(-font wenquanyi是加入的字体!字体就正常了!)



你可能感兴趣的:(嵌入式学习---------QT的移植及测试方法)