Chinaunix首页 | 论坛 | 博客
  • 博客访问: 201006
  • 博文数量: 27
  • 博客积分: 1400
  • 博客等级: 上尉
  • 技术积分: 350
  • 用 户 组: 普通用户
  • 注册时间: 2009-10-22 08:34
文章分类

全部博文(27)

文章存档

2011年(1)

2010年(1)

2009年(25)

我的朋友

分类: 嵌入式

2009-11-20 11:00:56

e2fsprogs e2fsprogs-devel这个包可以提供uuid支持
libjpeg
Qtopia不提供jpeg库。 Qtopia需要Qt/Embedded配置为支持jpeg。
libjpeg库可从 下载
qt-x11-3.3.4
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文件;
uic,moc,qvfb,qmake,tmake 和designer使用的时候要注意版本,2.x, 3.x, 4.x之间是不兼容的,但相同主版本号之间是兼容的,所以我们在build Qtopia过程中经常从qt-x11-2.3中拷贝现成的uic和moc供qte使用。
编译过程中出现一些头文件找不到, 类未定义等等,很多时候是因为误使用了系统默认搜索路径下的uic等工具造成的。大家要注意这个问题
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

安装
1.建立本机Qtopia 虚拟平台
软件: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/qtopia 目录下,我们以下的实验都是在这个目录下进行的。

tar -zxvf qt-x11-free-3.3.4.tar.gz
mv qt-x11-free-3.3.4 qt-x11-3.3.4
tar -zxvf e2fsprogs-1.39.tar.gz
tar -zvxf jpegsrc.v6b.tar.gz
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
 mv qt-2.3.10  qt-2.3.10-host
 
 tar -xzvf qtopia-free-source-2.1.1.tar.gz
 mv qtopia-free-2.1.1 qtopia-2.1.1-host
 
初始环境变量
vi root/qtopia/shell/initial.sh
下面是文件内容
export QTEDIR=/root/qtopia/qt-2.3.10-host
export QT2DIR=/root/qtopia/qt-2.3.2
export TMAKEDIR=/root/qtopia/tmake-1.13
export QPEDIR=/root/qtopia/qtopia-2.1.1-host
export QT3DIR=/root/qtopia/qt-x11-3.3.4
export DQTDIR=$QT3DIR
export QTDIR=$QTEDIR
export PATH=$QT2DIR/bin:$QTEDIR/bin:$QPEDIR/bin:$DQTDIR/bin:$QT3DIR/bin:$QTDIR/bin:$TMAKEDIR/bin:$PATH
export LD_LIBRARY_PATH=$QT2DIR/lib:$QTEDIR/lib:$QPEDIR/lib:$DQTDIR/lib:$QT3DIR/lib:$QTDIR/lib:$LD_LIBRARY_PATH
使文件生效
source root/qtopia/shell/initial.sh
安装Tmake
export TMAKEDIR=$PWD/tmake-1.13
export TMAKEPATH=$TMAKEDIR/lib/qws/linux-x86-g++
export PATH=$TMAKEDIR/bin:$PATH
安装qt-x11-3.3.4
cd $QT3DIR
export TMAKEPATH=$TMAKEDIR/lib/linux-g++
export QTDIR=$QT3DIR
export PATH=$QTDIR/bin:$PATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
./configure
make
安装qt-x11-2.3.2
cd $QT2DIR
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/
安装qvfb
export TMAKEPATH=$TMAKEDIR/lib/linux-g++
export QTDIR=$QT2DIR
export PATH=$QTDIR/bin:$PATH:$TMAKEDIR/bin
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
cd $QTEDIR/tools/qvfb
/root/2410sQt/tmake-1.13/bin/tmake -o Makefile qvfb.pro
make
mv qvfb $QTEDIR/bin/
安装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
安装 e2fsprogs-1.39
cd e2fsprogs-1.39
./configure -enable-elf-shlibs
make
make install lib/uuid/
安装qtopia需要的文件
将e2fsprogs-1.35/lib/目录下uuid的文件夹复制到qtopia-2.1.1-host/include下
将e2fsprogs-1.35/lib/中的libuuid.a libuuid.so复制到qtopia-2.1.1-host/lib下


安装jpeg
 mkdir /usr/local/man
 mkdir /usr/local/man/man1
cd jpeg-6b
./configure --enable-shared --enable-static
make
make install -lib
$ls /usr/local/lib
libjpeg.la libjpeg.so libjpeg.so.62 libjpeg.so.62.0.0


安装qtopia需要的文件
[root@ns jpeg-6b]# cp jpeglib.h /qtopia/qtopia-2.1.1-host/include
[root@ns jpeg-6b]# cp libjpeg.a /usr/local/qtopia-2.1.1-host/lib 
[root@ns jpeg-6b]# cp libjpeg.so* /usr/local/qtopia-2.1.1-host/lib

//===================
如果没有先新建文件夹man\man1
编译jpeg时报错
  /usr/bin/install -c -m 644 ./cjpeg.1
  /usr/local/man/man1/cjpeg.1
  /usr/bin/install: cannot create regular file
  `/usr/local/man/man1/cjpeg.1': No such file or directory
  缺少/usr/local/man目录及man1子目录,新建后重新编译。
  shell> mkdir /usr/local/man
  shell> mkdir /usr/local/man/man1
 //===================
如果make install时没有-lib
$ls libjpeg*
libjpeg.la libjpeg.doc libtool
没出现要的libjpeg.so libjpeg.so.62 libjpeg.so.62.0.0
 add:
$make install -lib
$ls /usr/local/lib
libjpeg.la libjpeg.so libjpeg.so.62 libjpeg.so.62.0.0
安装qtopia
cd $QPEDIR
export QTDIR=$QTEDIR
export PATH=$QPEDIR/bin:$PATH
export LD_LIBRARY_PATH=$QPEDIR/lib:$LD_LIBRARY_PATH
./configure
make
make install
cd image/opt/Qtopia
mkdir demohome
 //===================
 qtopia安装完整后 其下有一个image目录,有关qtopia所有东西都在里面
 
运行一个例子
保证环境变量
export QTEDIR=/root/qtopia/qt-2.3.10-host
export QT2DIR=/root/qtopia/qt-2.3.2
export TMAKEDIR=/root/qtopia/tmake-1.13
export QPEDIR=/root/qtopia/qtopia-2.1.1-host
export QTDIR=$QTEDIR
export PATH=/root/qtopia/qt-2.3.10/bin:/usr/kerberos/sbin:/usr/kerberos/bin: /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6 /bin:/root/bin:/root/qtopia/tmake-1.13/bin:$PATH
export LD_LIBRARY_PATH=/root/qtopia/qtopia-2.1.1-host/lib:/root/qtopia/qt- 2.3.10-host/lib:/root/qtopia/tmake-1.13/lib:$LD_LIBRARY_PATH
可以正常的显示Virtual buffer,我们可以通过下面的命令在Virtual buffer 中实现Qtopia。
cd /root/qtopia/qtopia-2.1.1-host/bin
qvfb &
sleep 10
./qpe.sh 
可以看到界面.但是不能运行apps
 
编译已经完成了,Qtopia 2.1.1自由版中没有提供启动脚本,我们来写一个:
vi root/qtopia/shell/demo.sh
下面是shell文件内容
#!/bin/sh
source /root/qtopia/shell/initial.sh
export QTDIR=/root/qtopia/qtopia-2.1.1-host/image/opt/Qtopia
export QPEDIR=/root/qtopia/qtopia-2.1.1-host/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 240 -height 320 &
sleep 5s
echo "Starting Qtopia 2.1.1..."
HOME=/root/qtopia/qtopia-2.1.1-host/image/opt/Qtopia/demohome qpe
echo "Restarting killed sound deamons..."
[ "$artsd_pid" != "" ] && artsd &
[ "$esd_pid" != "" ] && esd &
然后就是让这个shell文件生效了。
source root/qtopia/shell/demo.sh

可以看到主机上面有pda界面并可以运行程序
http://blog.csdn.net/qipnx/archive/2007/01/10/1479362.aspx
学习笔记----图形界面程序Qt安装及其在2410-s上的移植


Qtopia安装简要入门

常见编译错误集锦
强烈感谢网友乌鸦的耐心指点 呵呵!!!!

PS:交叉编译还在进行中,移植时出了问题。要感谢nanfansky的帮助哦!
成功拉再贴出来!
阅读(1933) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~