在redhat9系统下编译本机虚拟qtopia-2.1.1
luyued 发布于 2011-01-04 22:16 浏览 N 次
在redhat9系统下编译本机虚拟qtopia-2.1.1
一、 准备工作
e2fsprogs这个包可以提供uuid支持,可以在此下载:
http://e2fsprogs.sourceforge.net/
libjpeg
Qtopia不提供jpeg库,而Qtopia需要Qt/Embedded配置为支持jpeg。
libjpeg库可从http://www.ijg.org/ 下载
qt-x11-3.3.4,
ftp://ftp.trolltech.com/qt/source/
二、 预备知识
1、 Qt-X11/QtEmbedded/Qtopia及其他常见包的关系
build Qtopia时经常能看到以下的包:
qt-x11-2.3.2
qt-x11-3.3.x
qte-2.3.x
qtopia-2.x
tmake-1.3
qmake, uic, moc
...
其中Qtopia编译依赖Qte;
qt-x11-2.3只与编译一些tool有关,如uic,moc,qvfb..Qtopia并不依赖qt-x11;
qt-x11-3.3.x用来编译qtopia desktop(qtopia与桌面同步的工具)和i18n相关的lupdate、lrelease工具, 所以如果你configure qtopia的时候没有加-no-qtopiadesktop选项或者用到了-languages参数就得准备qt-x11-3.x了; 另外在phone版本中有一个modem模拟的工具叫做phonesim,也依赖qt-x11-3.x编译,但一般用不上的。
tmake用于生成Makefile文件, 用在qte应用上;
qmake包含在qtopia里, 用于为Qtopia应用生成Makefile文件;
2、uic,moc,qvfb,qmake,tmake和designer使用的时候要注意版本,2.x, 3.x, 4.x之间是不兼容的,但相同主版本号之间是兼容的,所以我们在build Qtopia过程中经常从qt-x11-2.3中拷贝现成的uic和moc供qte使用。
注意:编译过程中出现一些头文件找不到,类未定义等等,很多时候是因为误使用了系统默认搜索路径下的uic等工具造成的!!
3、Qtopia/QtEmbedded版本对应关系
Qtopia1.7.0 / Qte 2.3.7
Qtopia2.1.1 / Qte 2.3.10
Qtopia2.1.2 / Qte 2.3.11
Qtopia2.2.0 / Qte 2.3.12 (包含在qtopia2.2源码包中)
首先我们来介绍一下这几个文件:
arm-linux-gcc-3.4.1.tar.bz2
这个文件解压后形成usr/local/arm/3.4.1,里面的bin目录里含有用于交叉编译在ARM-linux系统上的运用程式时用的编译联接程序和共享联接库.
比如:
后面用到的arm-linux-gcc,arm-linux-g++.
(交叉编译:将源文件编译联接成能够在目标机器上运行的可执行文件)
qt-embedded-2.3.10-free.tar.gz
这个文件解压后形成qt-2.3.10.里面的bin目录里含有模拟目标机器的qvfb后台程序等,比如:
-rwxr-xr-x 1 root root 408332 8月 1 16:10 moc
-rwxrwxr-x 1 515 515 217013 2005-06-27 qvfb
-rwxrwxr-x 1 515 515 280629 2005-06-27 uic
以及程序在qvfb上PC机模拟运行时需要加载的库文件和可以通过arm-linux-g++编译出在ARM-linux系统上运行Qt所要加载的库文件.
比如:
drwx------ 2 515 515 16384 2005-01-23 fonts/
lrwxrwxrwx 1 root root 16 8月 1 16:23 libqte.so -> libqte.so.2.3.10
lrwxrwxrwx 1 root root 16 8月 1 16:23 libqte.so.2 -> libqte.so.2.3.10
lrwxrwxrwx 1 root root 16 8月 1 16:23 libqte.so.2.3 -> libqte.so.2.3.10
-rwxr-xr-x 1 root root 6671698 8月 1 16:23 libqte.so.2.3.10
qtopia-free-source-2.1.1.tar.bz2这个文件解压后形成qt-2.1.1,里面是Qtopia平台.Qtopia是TrollTech公司为采用嵌入式linux系统的消费电子设备而开发的综合应用平台.
qt-x11-2.3.2.tar.gz这个文件解压活形成qt-2.3.2,里面的bin目录里含有在PC机器上的运行的开发工具和编译程序,
比如:
-rwxr-xr-x 1 root root 2350402 8月 1 15:53 designer
-r-xr-xr-x 1 500 1000 4160 2001-01-26 findtr
-rwxr-xr-x 1 root root 320277 8月 1 15:41 moc
-r-xr-xr-x 1 500 1000 8065 2001-01-26 qt20fix
-r-xr-xr-x 1 500 1000 5324 2001-01-26 qtrename140
-rwxr-xr-x 1 root root 280629 8月 1 15:49 uic
lib目录里含有源文件编译成PC机器X11环境下的共享联接库,比如:
lrwxrwxrwx 1 root root 14 8月 1 15:49 libqt.so -> libqt.so.2.3.2
lrwxrwxrwx 1 root root 14 8月 1 15:49 libqt.so.2 -> libqt.so.2.3.2
lrwxrwxrwx 1 root root 14 8月 1 15:49 libqt.so.2.3 -> libqt.so.2.3.2-rwxr-xr-x 1 root root 6445720 8月 1 15:49 libqt.so.2.3.2
lrwxrwxrwx 1 root root 17 8月 1 15:49 libqutil.so -> libqutil.so.1.0.0
lrwxrwxrwx 1 root root 17 8月 1 15:49 libqutil.so.1 -> libqutil.so.1.0.0
lrwxrwxrwx 1 root root 17 8月 1 15:49 libqutil.so.1.0 -> libqutil.so.1.0.0
-rwxr-xr-x 1 root root 41568 8月 1 15:49 libqutil.so.1.0.0
tmake-1.13.tar.gz这个文件解压后形成tmake-1.13,里面bin目录里含有用于组织生成.pro文件的progen工具,和组织生成Makefile的tmake工具.以后经常会用到.
比如:
-r-xr-xr-x 1 500 users 6150 2003-08-01 progen
-r-xr-xr-x 1 500 users 32933 2004-01-28 tmake
-r--r--r-- 1 500 users 118 2003-08-01 tmake_win
三、开始编译和安装本机Qtopia 虚拟平台
1、需要资源:
tmake-1.13.tar.gz、qtopia-free-source-2.1.1.tar.gz、qt-embedded-2.3.10-free.tar.gz、qt-x11-2.3.2.tar.gz、qt-x11-free-3.3.4.tar.gz、e2fsprogs-1.39.tar.gz、 jpegsrc.v6b.tar.gz
将本次实验所需的四个文件拷贝到/root/2410sQt目录下,以下的实验都是在这个目录下进行的。
然后分别解压,如下:
tar -zxvf tmake-1.13.tar.gz
tar -xzvf qt-x11-2.3.2.tar.gz
tar -xzvf qt-embedded-2.3.10-free.tar.gz
tar -xzvf qtopia-free-source-2.1.1.tar.gz
2、初始环境变量
vi root/2410sQt//initial.sh
下面是文件内容
#!/bin/bash
export QPEDIR=$PWD/qtopia-free-2.1.1
export TMAKEDIR=$PWD/tmake-1.13
export QT2DIR=$PWD/qt-2.3.2
export QTEDIR=$PWD/qt-2.3.10
export QTDIR=$QTEDIR
export PATH=$QT2DIR/bin:$QTEDIR/bin:$QPEDIR/bin:$QTDIR/bin:$TMAKEDIR/bin:$PATH
export LD_LIBRARY_PATH=$QT2DIR/lib:$QTEDIR/lib:$QPEDIR/lib:$QTDIR/lib:$LD_LIBRARY_PATH
使文件生效
source root/2410sQt//initial.sh
3、安装qt-x11-2.3.2
export TMAKEPATH=$TMAKEDIR/lib/linux-g++
export QTDIR=$QT2DIR
export PATH=$QTDIR/bin:$PATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
./configure -no-xft
make
mkdir $QTEDIR/bin
cp bin/uic $QTEDIR/bin/
4、安装qvfb
export TMAKEPATH=$TMAKEDIR/lib/linux-g++
export QTDIR=$QT2DIR
export PATH=$QT2DIR/bin:$PATH:$TMAKEDIR/bin
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
cd $QTEDIR/tools/qvfb
tmake -o Makefile qvfb.pro
make
mv qvfb $QTEDIR/bin/
5、安装libqte
cd $QTEDIR
export TMAKEPATH=$TMAKEDIR/lib/qws/linux-x86-g++
export QTDIR=$QTEDIR
export PATH=$QTDIR/bin:$PATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
cp -f $QPEDIR/src/qt/qconfig-qpe.h src/tools/
./configure -system-jpeg -gif -no-xft -qconfig qpe -qvfb -depths 4,8,16,32
make sub-src
6、安装 e2fsprogs-1.39(如果完全安装redhat9则不需要这一步)
cd e2fsprogs-1.39
./configure -enable-elf-shlibs
make
make install lib/uuid/
然后,安装qtopia需要的文件
l 将e2fsprogs-1.35/lib/目录下uuid的文件夹复制到qtopia-2.1.1-host/include下
l 将e2fsprogs-1.35/lib/中的libuuid.a libuuid.so复制到qtopia-2.1.1-host/lib下
7、安装qtopia
cd $QPEDIR
export QTDIR=$QTEDIR
export PATH=$QPEDIR/bin:$PATH
./configure
make
make install
cd image/opt/Qtopia
mkdir demohome
qtopia安装完整后,其目录下有一个image目录,有关qtopia所有东西都在里面。
三、 运行一下试试
可以写一个脚本:
vim /root/2410sQt/runQtopia.sh
#!/bin/bash
export QPEDIR=/root/2410sQt/qtopia-free-2.1.1
export QTDIR=/root/2410sQt/qt-2.3.10
export LD_LIBRARY_PATH=/root/2410sQt/qt-2.3.10/lib:/root/2410sQt/qt-2.3.2/lib:/root/2410sQt/qtopia-free-2.1.1/lib:
export PATH=/root/2410sQt/qt-2.3.10/bin:$PATH
qvfb -width 640 -height 480&
sleep 5
$QPEDIR/bin/qpe.sh
过大约5秒钟,可以看到界面,但是不能运行里面的应用程序。
四、 让本机虚拟qtopia里的应用程序跑起来
Qtopia 2.1.1自由版中没有提供启动脚本,我们可以自己写一个:
vim root/2410sQt/demo.sh
下面是shell文件内容
#!/bin/bash
source /root/2410sQt/initial.sh
export QTDIR=/root/2410sQt/qtopia-free-2.1.1/image/opt/Qtopia
export QPEDIR=/root/2410sQt/qtopia-free-2.1.1/image/opt/Qtopia
export LD_LIBRARY_PATH=$QPEDIR/lib:$LD_LIBRARY_PATH
export PATH=$QPEDIR/bin:$PATH
findproc() {
/bin/ps -e | /bin/sed -n -e '/\<'$1'\>/ s/^ *\([0-9][0-9]*\).*/\1/p'
}
killproc() {
pid=`findproc $1`
[ "$pid" != "" ] &&kill $pid
}
killall quicklauncher
killall qpe
killall qvfb
[ -x /sbin/fuser ] &&( /sbin/fuser -kn tcp 4242 || /sbin/fuser -kn tcp 4243 )
[ -x /bin/fuser ] &&( /bin/fuser -kn tcp 4242 || /bin/fuser -kn tcp 4243 )
echo "Stopping common sound deamons..."
artsd_pid=`findproc artsd`
[ "$artsd_pid" != "" ] &&kill $artsd_pid
esd_pid=`findproc esd`
[ "$esd_pid" != "" ] &&kill $esd_pid
echo "Starting qvfb..."
qvfb -width 640 -height 480 &
sleep 5
echo "Starting Qtopia 2.1.1..."
HOME=/root/2410sQt/qtopia-free-2.1.1/image/opt/Qtopia/demohome qpe
echo "Restarting killed sound deamons..."
[ "$artsd_pid" != "" ] &&artsd &
[ "$esd_pid" != "" ] &&esd &
然后就是让这个shell文件生效了。
source root/qtopia/shell/demo.sh
congratulations!!!
- 07-01· 北凉国的那些事(组诗)
- 07-01· 《乱世佛音》 第七章 巨变
- 07-01· 南匈奴始末(3)
- 06-30· 流浪在波希米尼亚
- 06-30· 希尼亚从大洋西岸放飞新
- 06-28· 瑪利亞之城 - 家庭日 "光
- 06-28· 至青年营弟兄姐妹的一封
- 06-26· 《三国群英大富翁》追忆
- 06-24· 东莞血汗工厂实录(281:沙田
- 06-22· 第一次看戏
- 06-22· 经典复刻,独一无二:试
- 06-22· 蓝旗营教学中心9月份盛大
- 06-22· 品牌折扣女装嫣然品牌折
- 06-21· IQVopdnkvdz 1100
- 06-21· kriyoylto8fyds'p;tyijyfuifiogoi
- 06-21· 巴黎春天缤纷圣诞 喜迎新
- 06-21· 晒JS宝宝贝贝些 咯
- 06-21· 司马氏的谥法和葬仪
- 06-21· [转载]司马氏的谥法和葬仪
- 06-21· 闲来蓟县看秋山