一、QT-X11环境的配置
1、解压qt-x11-opensource-src-4.4.3.tar.gz
2、cd 解压了的目录 QT-X11
3、 #./configure //生成Makefile
#make (或者:gmake)
#make install //安装完后会生成目录/usr/local/Trolltech/QT-4.4.3 ,这时刚才解压完得到的QT-X11可以不要了。
4、设置环境变量:
在/etc/profile 加入:
#for QT4
export QTDIR=/usr/local/Trolltech/Qt-4.4.3
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
export PATH=$QTDIR/bin:$PATH
export QMAKESPEC=$QTDIR/mkspecs/linux-g++ //生成Makefile的配置文件的路径
5、#source /etc/profile 使环境变量生效
6、用一个例子测试是否OK:
写一个 a.cpp
#qmake -project //生成 a.pro
#qmake //生成 Makefile
#make
#./a
如果打开designer 的窗口很乱,可以设置:进入edit--preferences,user interface mode 选择docked window.
二、QT-em环境的配置
1、把arm-linux-gcc版本:3.3.2 放目录/usr/local/arm ,并:export PATH=/usr/local/arm/3.3.2/bin:$PATH
2、解压qt-embedded-linux-opensource-src-4.4.3.tar.gz 得qt-embed
3、添加qconfig-local.h,用于触摸屏加载,并将该文件放在解压了的qt-embed的/src/tools目录下面用于对qte库进行裁减
(位于QTDIR/src/tools/qconfig-XXX.h,其XXX为自定义的 名字,该特征字可以在configure时用-qconfig XXX指定)
4、修改qmouselinuxtp_qws.h文件(解压后搜索 ls -R|grep qmouselinuxtp_qws.h ,会有三个文件,其中2个是仅仅是包含第3个。找到原文件(../src/gui/embedded/qmouselinuxtp_qws.h))
加入:
#define QT_QWS_IPAQ
#define QT_QWS_IPAQ_RAW
5、配置:
(1)在PC上编译时,可不用考虑qte库的大小,只用指定编译平台即可
#./configure -xplatform qws/linux-arm-g++ -embedded arm -qconfig local -release -shared -qt-mouse-linuxtp -little-endian -no-qt3support -qt-freetype -qvfb -depths 4,8,16,32 -no-feature-QWS_CURSOR
解析各个参数的意义(键入./configure -help来获得一些帮助信息。 ):
-xplatform #the target platform when cross-compiling
qws #qws选项的含义是使这个应用程序成为服务器。
QT Embedded也是一种C/S结构,需要有一个QT application做QWS Server,
程序启动时带有-qws参数的就是QWS Server,不带这个参数就是QWS Client。
因此任何一个基于QT的application都可以做QWS Server。
当然QWS Server一定先于QWS Client启动,否则QWS Client将启动失败。
在实际应用中,会指定某个特殊的application做QWS Server,这个application一
般还会管理一些其它的系统资源。
-xplatform qws/linux-arm-g++ -embedded arm
#目标平台编译配置文件使用/mkspecs/qws/linux-arm-g++目录下的配置文件,嵌入式平台为arm
-embedded arm #specify your platform architecture
-qconfig local #使用配置文件qconfig-local.h,若使用qconfig-large.h配置文件,则使用-qconfig large选项。
-release #以发行版而非调试版来编译Qt开发工具及相应库。
-shared #所编译用来开发的Qt库及Qt开发工具的库是动态库
-qt-mouse-linuxtp #触摸屏协议支持linuxtp
-little-endian #小端格式存放代码
-no-qt3support #不提供对qt3函数支持
-qt-freetype #Use the libfreetype bundled with Qt.
-qvfb -depths 4,8,16,32 指定Qt 嵌入式开发包生成虚拟缓冲帧工具qvfb,并支持4,8,16,32 位的显示颜色深度。
(-no-qvfb 目标平台已支持framebuffer,因而不使用虚拟帧缓冲。)
-qvfb:Qte特有的参数之一,默认是支持的。
-no-feature-QWS_CURSOR #去掉光标
6、#make
7、#make install
8、安装完成之后,会在生成下面目录:\usr\local\Trolltech\QtEmbedded-4.4.3-arm
此目录有:
1) bin 4个命令:moc qmake rcc uic
2) demos 大的实例
3) examples 分类的小例子
4) include 包含的头文件
5) lib 库文件
6) mkspecs 生成Makefile的文件
7) plugins
8) translations
按照此裁减方法可得到QtEmbedded-4.4.3-arm的/lib, /plugins文件夹的内容如下:
(1)lib
fonts #只留下支持中文显示的文泉驿字体 wenquanyi_120_50.qpf
pkgcongig #相应的.pc文件能自动获得链接参数,如库及依赖的其它库的位置,文件名及其它一些连接参数。请看Makefile好助手:pkgconfig.mht
libQtCore
libQtGui
libQtNetwork
libQtScript #(script库)可删掉
libQtSvg #(svg库:可变动的向量绘图形文件)可删掉
libQtTest #可删掉可删掉
libQtXml #(xml库)可删掉
以上可删除的几个库其实可以在配置时加入以下选项来去除,但是编译有错,要修改太多文件,所以当需要移植到板上的文件系统时,这几个库可手工删除:
-no-assistant-webkit (script库)
-no-webkit (network库)
-no-svg (svg库:可变动的向量绘图形文件)
-no-xmlpatterns (xml库)
(2)plugins
accessible #可删掉
iconengines #svg库:可变动的向量绘图形文件 可删掉
imageformats #对各种格式的图片的支持
sqldrivers #sql数据库 可删掉
9、在/etc/profile 加入上配置交叉编译环境(编译时用):
export QTDIR=/usr/local/Trolltech/QtEmbedded-4.4.3-arm
export PATH=$QTDIR/bin:/usr/local/arm/3.3.2/bin:$PATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
export QMAKESPEC=$QTDIR/mkspecs/qws/linux-arm-g++ #目标平台编译配置文件使用/mkspecs/qws/linux-arm-g++目录下的配置文件
#这个变量目的是调用此目录下的脚本,让QMAKE自动生成makefile
10、移植QT到目标板的文件系统:把编译好的QtEmbedded-4.4.3-arm的/lib, /plugins文件夹拷贝到目标板的文件系统(wanc2440)中制定目录下:/usr/local/Trolltech/$QTEDIR
这里$QTEDIR目录名称与在X86里安装的文件目录名称一致,例如QtEmbedded-4.4.3-arm:
11、然后配置目标板的文件系统(wanc2440)环境变量,修改.bashrc文件(QT程序运行时使用):
环境变量作用:以后你只要 在终端输入qmake或make或designer 等指令就可以直接使用qmake等工具了,这就是环境变量的作用。)
//鼠标(或者触摸屏)的设备文件,一般是/dev/mouse,还可能是/dev/ps2(ps类型的鼠标),ttyS*(串口鼠标),而对于触摸屏,则会是/dev/Tpanel(在2.4.*的qte版本中).
ln -s /dev/touchscreen/0 /dev/touchscreen/0raw
export QWS_MOUSE_PROTO=LinuxTP:/dev/h3600_tsraw #设定鼠标的类型和设备.格式
export QTDIR=/usr/local/Trolltech/QTEmbedded-4.4.3-arm
export LD_LIBRARY_PATH=$QTDIR/lib:LD_LIBRARY_PATH
export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin
12、配置NFS 服务:
目录 :arm文件系统(gec2440)所在目录
主机 : *
基本权限: 读写
用户访问: 将远程根目录用户视为本地用户
13、配置U-BOOT启动参数
setenv bootargs root=/dev/nfs nfsroot=192.168.50.102:/forARM/gec2440 ip=192.168.50.7 init=/linuxrc console=ttySAC0,115200 display=sam320
14、更改arm文件系统(gec2440) /usr/etc/rc.local 文件的
/sbin/ifconfig eth0 192.168.50.7 netmask 255.255.255.0 up
使IP为开发板的IP
15、在QT-X11上编译好的文件,要移植到开发板上:
把/etc/profile 环境变量改为QT-E的,
#qmake -project
#qmake
#make
把可执行文件放到GEC2440的目录下,用NFS启动。
#./aa -qws
16、 #make configclean 可将前面所有的配置都清除掉。
-------------------------------qconfig-local.h------------------
#ifndef CONFIG_LOCAL
#define CONFIG_LOCAL
#define QT_QWS_IPAQ
#define QT_QWS_IPAQ_RAW
#如果定义了上述的两个IPAQ相关的宏,其默认打开设备文件/dev/h3600_tsraw。如果只定义QT_QWS_IPAQ,则打开设备文件为/dev/h3600_ts。
#要在开发板的文件系统的 .bashrc 文件设定环境变量:export QWS_MOUSE_PROTO=LinuxTP:/dev/h3600_tsraw 。
#define QT_NO_QWS_CURSOR #让程序运行时,触摸屏中央无光标出现:
#define QT_NO_QWS_MOUSE_AUTO #去掉鼠标自动识别功能,(在实际中,这一步可以不要,但对于缩减QTE的大小很有帮助)
#endif