最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

QT+QTOPIA在linux上的移植

来源:动视网 责编:小OO 时间:2025-09-25 07:16:20
文档

QT+QTOPIA在linux上的移植

QT+QTOPIA在linux上的移植作者:孔德峰日期:2005-11-23-- 目录--1. 简介2. 准备工作   2.1目标   2.2软件包   2.3环境的建立3. PC平台编译   3.1编译QT   3.2编译QTOPIA   3.3测试QTOPIA4. 目标平台交叉编译   4.1交叉编译QT   4.2交叉编译QTOPIA5.移植QT中的相关设备接口   5.1鼠标   5.2触摸屏6. 移植QTOPIA中的相关设备接口   6.1电源管理设备7.编写QT程序并移植8.编写Q
推荐度:
导读QT+QTOPIA在linux上的移植作者:孔德峰日期:2005-11-23-- 目录--1. 简介2. 准备工作   2.1目标   2.2软件包   2.3环境的建立3. PC平台编译   3.1编译QT   3.2编译QTOPIA   3.3测试QTOPIA4. 目标平台交叉编译   4.1交叉编译QT   4.2交叉编译QTOPIA5.移植QT中的相关设备接口   5.1鼠标   5.2触摸屏6. 移植QTOPIA中的相关设备接口   6.1电源管理设备7.编写QT程序并移植8.编写Q
QT+QTOPIA在linux上的移植

作者: 孔德峰

日期: 2005-11-23

-- 目录 --

1. 简介

2. 准备工作

    2.1 目标

    2.2 软件包

    2.3 环境的建立

3. PC平台编译

    3.1 编译QT

    3.2 编译QTOPIA

    3.3 测试QTOPIA

4. 目标平台交叉编译

    4.1 交叉编译QT

    4.2 交叉编译QTOPIA

5. 移植QT中的相关设备接口

    5.1 鼠标

    5.2 触摸屏

6. 移植QTOPIA中的相关设备接口

    6.1 电源管理设备

7. 编写QT程序并移植

8. 编写QTOPIA程序并移植

X. tips

-- 正文 --

1. 简介

    QT是目前在linux上使用较广的一个图形系统。用户经常配合KDE桌面环境来使用。需要注意的是我们看到的并操作的是KDE,而不是QT。QT只是一套库函数(类库),KDE才是可执行程序.同时KDE为了其他程序方便的对其操作,也提供一套库函数(类库)。

    在PC机上的QT是基于X11图形系统的,在嵌入设备中往往不需要这么累赘,只需使用QTE(QT Embedded)即可包括PC平台中X11和QT库的功能。

    另一方面,嵌入设备受许多条件的,桌面系统也不能直接使用PC机上已有的系统。QTOPIA就是相当于KDE的桌面系统.根据具体嵌入设备的需要可以配置成phone和pocket pc两种。

2. 准备工作

2.1 目标

    首先要明确将要干的是什么,将怎么做。

    我们的目标很明确——就是在自己的开发板上使用基于QTE的桌面系统QTOPIA。

    我们的工作往往是先在PC完成以后移植到ARM平台上;先编译好QTE的库,再编译QTOPIA。因为这个系统和具体的设备有关(例如:触摸屏、时钟、电源管理设备等),所以最后还需要做设备接口的移植工作。

    

2.2 软件包

    系统平台:RedHat 9(完全安装)

    qt-embedded-2.3.7.tar.gz (qte的库)

    qt-x11-2.3.2.tar.gz (为了生成相应的qtdesigner和qvfb)

    qtopia-free-1.7.0.tar.gz (qte的桌面环境程序)

    tmake-1.11.tar.gz (编译时会用到)

    e2fsprogs-1.35.tar.gz (只使用其中的uuid的库)

    当下载完这些包以后我们先建立一个工作环境。假设所有软件包都下载在用户目录下,通常都是/root。

2.3 环境的建立

# cd ~

# mkdir x86-qtopia

# tar zxvf qt-x11-2.3.2.tar.gz

# mv qt-2.3.2 qt-x11

# cd x86-qtopia

# tar zxvf ../tmake-1.11.tar.gz

# tar zxvf ../qt-embedded-2.3.7.tar.gz

# tar zxvf ../qtopia-free-1.7.0.tar.gz

# tar zxvf ../e2fsprogs-1.35.tar.gz

# mv tmake-1.11 tmake

# mv qt-2.3.7/ qt

# mv qtopia-free-1.7.0 qtopia

# mv e2fsprogs-1.35 e2fsprogs

# cp x86-qtopia arm-qtopia -rf

    记住,用户目录下的x86-qtopia目录是PC机上编译的工作环境,arm-qtopia是arm平台的交叉编译工作环境,qt-x11是两者公用的。

    接下来还必须编译qt-x11,主要是为了编译生成其中的qtdesigner和qvfb。qvfb程序在系统中并未安装,需要我们自己编译。qtdesigner是和qt库的版本是相关的,当我们使用PC机上和QTE版本不符的qtdesigner时,可能在PC机上的qt-x11能使用的控件在QTE上并未实现,导致应用程序编译不成功。所以,我们使用2.3版本的QTE时,必须使用相同版本的qt-x11编译生成的qtdesigner和qvfb。

# cd ~/qt-x11

# export QTDIR=$PWD

# echo yes | ./configure -static -no-xft -no-opengl -no-sm

# make -C src/moc

# cp src/moc/moc bin

# make -C src

# make -C tools/designer

# make -C tools/qvfb

# cp tools/qvfb/qvfb bin

# strip bin/uic bin/moc bin/designer bin/qvfb

# cp qt-x11/bin/* qt/bin -f

# cp qt-x11/bin/* qt/bin -f

 

3. PC平台编译

    编译之前做一下准备工作:打开一个控制台之后设置环境变量。

# cd ~/x86-qtopia

# export QTDIR=$PWD/qt

# export QPEDIR=$PWD/qtopia

# export TMAKEDIR=$PWD/tmake

# export TMAKEPATH=$TMAKEDIR/lib/qws/linux-generic-g++

# export PATH=$QTDIR/bin:$QPEDIR/bin:$TMAKEDIR/bin:$PATH

    3.1 编译QTE

# cd $QTDIR

# cp $QPEDIR/src/qt/qconfig-qpe.h src/tools/ -f

# (echo yes ; echo no) | ./configure -platform linux-generic-g++  -qconfig qpe -depths 16,24,32

# make -C src clean

# make -C src

    看一下$QTDIR目录下是否已经有了qt的库了?

    3.2 编译QTOPIA

# cd $QPEDIR/src

# ./configure

# make clean

# make

    3.3 测试QTOPIA

    激动的时刻来了,如果这个步骤成功将意味着可以做应用开发了。

# cd ~/x86-qtopia

# mkdir dist

# cd dist

# cp -af ../qt/lib/ .

# cp -af ../qtopia/apps .

# cp -af ../qtopia/bin .

# cp -af ../qtopia/plugins .

# cp -af ../qtopia/i18n .

# cp -af ../qtopia/pics .

    因为有点错误,所以必须进行一下操作:

# cd pics

    因为qpe运行的时候,当前目录必须是$QTDIR/bin,所以不能在$QTDIR目录下执行bin/qpe来运行。

# export QTDIR=~/x86-qtopia/qt

# cd $QTDIR/bin

# ./qvfb &

# ./qpe &

    看到qpe在qvfb中的界面了吗?我看到了~!

4. 目标平台交叉编译

    与PC机上的编译一样,打开一个控制台之后需要设置环境变量。

# cd ~/arm-qtopia

# export QTDIR=$PWD/qt

# export QPEDIR=$PWD/qtopia

# export TMAKEDIR=$PWD/tmake

# export TMAKEPATH=$TMAKEDIR/lib/qws/linux-arm-g++

# export PATH=$QTDIR/bin:$QPEDIR/bin:$TMAKEDIR/bin:$PATH

    4.1 交叉编译QT

    4.2 交叉编译QTOPIA

5. 移植QT中的相关设备接口

    5.1 鼠标

    5.2 触摸屏

6. 移植QTOPIA中的相关设备接口

    6.1 电源管理设备

7. 编写QT程序并移植

8. 编写QTOPIA程序并移植

X. tips

@ 移植的时候编译器的版本很重要.qte-2.3.7在redhat9的3.2编译器下工作很正常,但在Fedora4的gcc-3.4.2编译器下编译却不成功.根据测试,PC平台上使用gcc-3.2可以顺利编译,arm平台上使用gcc-2.95.2可以顺利通过(gnuarm的编译器好像不行,用华恒光盘中的armv4l-unkown-linux-gcc的可以编译通过)

@ 编译过程中会提示缺少uuid的头文件和库,下载e2fsprogs-libs-1.38.tar.gz,里面有uuid的相关代码.

@ 编译的时候需要指定编译器,在qt的configs目录下有许多文件,修改linux-arm-g++-*这些文件中的相关定义.例如:默认使用arm-linux-gcc编译器,而我使用的是GNUARM的arm-elf-gcc编译器,替换文件中所有arm-linux-前缀为arm-elf-即可.

文档

QT+QTOPIA在linux上的移植

QT+QTOPIA在linux上的移植作者:孔德峰日期:2005-11-23-- 目录--1. 简介2. 准备工作   2.1目标   2.2软件包   2.3环境的建立3. PC平台编译   3.1编译QT   3.2编译QTOPIA   3.3测试QTOPIA4. 目标平台交叉编译   4.1交叉编译QT   4.2交叉编译QTOPIA5.移植QT中的相关设备接口   5.1鼠标   5.2触摸屏6. 移植QTOPIA中的相关设备接口   6.1电源管理设备7.编写QT程序并移植8.编写Q
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top