您的位置:首页 > 编程语言 > Qt开发

qt移植到s3c2440开发板上

2013-06-25 11:45 274 查看
一、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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: