分类: 嵌入式
2011-01-06 20:03:59
一、PC环境:
Vmware6.5;
操作系统为:ubuntu9.10;
Gcc 版本是:4.4.1;
交叉工具链是4.1.1 版本。
二、安装交叉工具链:
QT4 最好使用GCC 4版本的工具链,这里提供的4.1.1版本的交叉工具链,工具链包是:4.1.1_softfloat_withlib.tar.bz2。
将它解压到/opt/crosstool目录下,在/opt/crosstool目录下多了一个4.1.1的目录,这个就是4.1.1版本的交叉工具链。
使用4.1.1版本的交叉工具链前,记得要设置PATH环境变量。
export PATH=/opt/crosstool/4.1.1/bin:$PATH
三、ubuntu下的QT4开发环境搭建:
开发QT4 应用程序需要安装qt4库、头文件和qt开发工具。一般的QT开发环境包括两部分:
1 qt4库文件和头文件;
2 qt4的开发工具如qmake、uic、moc等工具。
下面介绍在ubuntu下大家qt4开发环境的方法,基于ubuntu平台的QT4开发环境搭建方式一般有3种:
(1)使用 apt-get install XXX从ubuntu源服务器安装qt4开发工具:
如:apt-get install libqt4-dev等。
Ubuntu源服务器上提供的qt4的开发库和工具,可以自新立得软件管理器上搜索 qt4的库和开发工具,选择安装。
(2)使用sdk开发工具包安装:
Qt从4.5版本之后提供了SDK安装包,可以从 下载SDK安装包,SDK安装包就包括qt4开发所需要的动态库、头文件和开发工具。其中还提供了qtcreatr集成开发环境,qtcreator是一个集开发、调试于一体的图像化的开发环境。
如:qt-sdk-linux-x86-opensource-2009.04.1.bin
在终端上执行上面这个文件,会弹出安装导向对话框,根据对话框的提示,安装即可。
(3)从源码编译安装
从“ftp://ftp.qt.nokia.com/qt/source/”下载qt-x11的源码,如
下载qt-x11-opensource-src-4.5.3.tar.gz;
然后在ubuntu终端上,解压、配置、编译、安装。
步骤如下:
(1) 解压源码包:
cd /home/farsight
tar zxvf qt-x11-opensource-src-4.5.3.tar.gz
(2) 配置源码包:
cd qt-x11-opensource-desktop-4.5.3
./configure
配置时,可以使用 –help查看配置选项。
(3) 编译
Make
配置完之后,生产makefile文件,是用make编译
(4)安装
make install
默认情况下,会安装在/usr/local/Trolltech/Qt-4.5.2/目录,可以在配置是 使用-prefix选项配置安装目录。
这里注意,源码包提供的qt4所以工具的源代码,如在源码的tools下有个qconfig工具,这个工具是用来细分配置qt4库的。在前面使用./configure 来配置属于粗略配置,可以使用qconfig工具进一步细分配置qt库。
一般情况下,使用粗略配置即可,但是在交叉编译qt4库时,希望进一步定制QT4库的大小,就可以使用qconfig工具了。Qconfig在下面配置编译qt-embedded是用到。
qconfig工具只有从qt源码里获得,在前两种方式都为提供qconfig工具。
因此,我们将配置工具qconfig编译,拷贝到/usr/local/bin目录下。
make tools/qconfig
cp tools/qconfig/qconfig /usr/local/bin/
从源码安装qt时,在使用QT-4.5.3前需要设置以下环境变量:
export QTDIR=/usr/local/Trolltech/Qt-4.5.3
export PATH=$QTDIR/bin:$PATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
以上就是在ubuntu下安装qt4开发环境的三种方法。
四、交叉编译qt-embedded
(1)交叉编译qt4库
获得嵌入式linux版本的qt源码包之后,一般的步骤是解压、配置编译、安装。如下载的源码是qt-embedded-linux-opensource-src-4.5.3.tar.gz
在解压源码之后,接下来就是配置qt-embedded。配置的一般方法是在源码目录下使用./configure 来粗略配置。要细微配置 QT4的可以使用qconfig工具。
这里我们在解压qt-embedded源码后,使用qconfig工具配置qt4:
cd qt-embedded-linux-opensource-src-4.5.3
qconfig src/corelib/global/qfeatures.txt
启动qconfig工具后,出现了一个配置界面,使用这个界面可以选择qt的配置选项。
配置完之后,将配置保存为qconfig-local.h文件,保存在src/corelib/global/目录下;
为了使QT4支持触摸屏,我们在qconfig-local.h添加两个宏定义: #define QT_QWS_IPAQ
#define QT_QWS_IPAQ_RAW
这两个宏是表示使用qt源码中的自带触摸屏支持。
如:我的qconfig-local.h文件内容如下:
#ifndef QT_H
#endif
#ifndef QT_DLL
#define QT_DLL
#endif
#define QT_QWS_IPAQ
#define QT_QWS_IPAQ_RAW
#define QT_NO_QWS_CURSOR
#define QT_NO_QWS_MOUSE_AUTO
除了使用qconfig工具得到qconfig-local.h文件之外,可以直接编辑生产qconfig-local.h文件。生成qconfig-local.h文件之后,接下来是使用./configure命令配置qt库;
以下是qt-embedded的一些配置选项:
./configure -prefix /usr/qt-4.5.3 -debug -opensource -embedded arm -qconfig local -depths 4,8,16,32 -qt-mouse-linuxtp -qvfb
这里的配置是:
-prefix 指定安装路径是/usr/qt-4.5.3
-debug 表示调试版本;
-opensource 表示开源版本;
-embedded arm 指定平台是arm;
-qconfig local 使用细微配置文件qconfig-local.h
-depths 4,8,16,32 指定美像素的位数
-qt-mouse-linuxtp 指定使用qt指定的触摸屏
这里需要注意,指定平台是arm,默认的交叉工具链是arm-linux-开头的,而我的工具链是以arm-linux-gnu-开头,所以要修改 mkspecs/qws/linux-arm-g++/qmake.conf文件,将arm-linux-开头的命令改成以arm-linux-gnu- 开头,如下的qmake.conf文件,红色部分为修改的地方:
#
# qmake configuration for building with arm-linux-g++
#
include(../../common/g++.conf)
include(../../common/linux.conf)
include(../../common/qws.conf)
# modifications to g++.conf
QMAKE_CC = arm-linux-gnu-gcc
QMAKE_CXX = arm-linux-gnu-g++
QMAKE_LINK = arm-linux-gnu-g++
QMAKE_LINK_SHLIB = arm-linux-gnu-g++
# modifications to linux.conf
QMAKE_AR = arm-linux-gnu-ar cqs
QMAKE_OBJCOPY = arm-linux-gnu-objcopy
QMAKE_STRIP = arm-linux-gnu-strip
配置完成之后,就可以编译安装了:
make
make install
编译的时间比较长, 编译安装后,qt4安装在/usr/qt-4.5.3目录下。
(2)QT4应用程序交叉编译
交叉编译自己开发的 QT4应用程序需要配置如下环境变量:
export QTDIR=/usr/qt-4.5.3
export QMAKESPEC=qws/linux-arm-g++
export PATH=$QTDIR/bin:$PATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
例如:在PC上开发了一个qt程序,并且编译运行通过,现在需要交叉编译这个程序;步骤是先设置上面的环境变量;
然后使用qmake重新生成Makefile文件;
然后make 就可以了;
五、部署QT4到嵌入式根文件系统
部署QT4到根文件系统大概分成两步:
(1)拷贝QT库和QT应用程序到根文件系统中;
(2)配置QT应用程序运行时所需要的环境;
1、拷贝QT库和QT应用程序
自己编写的QT应用程序的运行依赖于QT库。因此,移植QT应用程序到根文件系统时,要将QT库移植到根文件系统中;s
如,根文件系统的构建目录是/opt/filesystem,qt-embedded的按装目录是/usr/qt-4.5.3。使用下面的命令将拷贝QT库
mkdir /opt/filesystem/qt-4.5.3
mkdir /opt/filesystem/qt-4.5.3/lib
cp –a /usr/qt-4.5.3/lib/*so* /opt/filesystem/usr/qt-4.5.3/
cp –a /usr/qt-4.5.3/lib/fonts /opt/filesysgem/usr/qt-4.5.3/lib/
拷贝QT应用程序到根文件系统中,如拷贝到/opt/filesystem/usr/bin目录下;
2、配置QT应用程序运行环境
在运行QT应用程序时,需要指定如下环境变量:
DISPLAY=:0.0
HOME=/tmp
QTDIR="/usr/qt-4.5.3"
LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY
QWS_MOUSE_PROTO=linuxtp:/dev/touchscreen/0
DISPLAY //指定显示设备
HOME //指定家目录
QTDIR //指定QT所在目录
LD_LIBRARY_PATH //指定QT库路径
QWS_MOUSE_PROTO //指定使用的触摸屏驱动的设备文件
运行QT程序:
在ARM平台上运行QT程序时,如果是第一次运行QT应用程序,则需要加-qws选项,指定这个程序是server程序,之后启动的都可以不使用-qws选项。
如:
cd /tmp
hello –qws &
部署QT4需要了解嵌入式根文件系统的基本部署过程,在搭建的根文件系统的基本结构后,再进行QT4的部署。