学习笔记----图形界面程序Qt安装及其在2410-s上的移植
上一篇 / 下一篇 2007-08-16 20:01:33 / 个人分类:嵌入式开发
Zp ]7yW4Afh0本文主要内容为编译器的安装,安装与建立Qt 桌面运行环境,Qt/E 的交叉编译,建立本机Qtopia 虚拟平台,Qtopia2.1.1 在2410-S 上的移植.
预备:编译器安装
编译器: arm-linux-gcc-3.4.1.tar.bz2
7A"y,Vl$mp`0(软件从网上下载,如果不知道从什么地方下载,google就是了。)
7A"y,Vl$mp`0(软件从网上下载,如果不知道从什么地方下载,google就是了。)
l5Ty+u"C"K#Hz0把软件arm-linux-gcc-3.4.1.tar.bz2拷贝到/usr/local下,在终端执行如下命令安装:
'Gs["}%?/jIbL0 tar -xjf arm-linux-gcc-3.4.1.tar.bz2
木铎校园 BBS 社区 y-z|Z'u~`
生成的编译工具在目录/usr/local/arm/3.4.1/bin下,修改/etc/profile,增加如下一行。这可以让我们直接运行arm-linux-gcc,而不必将其绝对路径都写出来,不过这得重新启动后才生效:木铎校园 BBS 社区X1oHL GtV7I#U2T
pathmunge /usr/local/arm/3.4.1/bin
生成的编译工具在目录/usr/local/arm/3.4.1/bin下,修改/etc/profile,增加如下一行。这可以让我们直接运行arm-linux-gcc,而不必将其绝对路径都写出来,不过这得重新启动后才生效:木铎校园 BBS 社区X1oHL GtV7I#U2T
pathmunge /usr/local/arm/3.4.1/bin
硬件:UP-NETARM2410S
'E9|v1T'Es0
'E9|v1T'Es0
一. 安装与建立Qt 桌面运行环境
'ie7SmB'_0软件:PC 机操作系统REDHAT LINUX 9.0 +MINICOM + ARM-LINUX 开发环境
7oaV:D }~0tmake-1.13.tar.gz qt-embedded-2.3.10-free.tar.gz木铎校园 BBS 社区!a*dZ]%p!Y(gp
qt-x11-2.3.2 .tar.gz
bP,rR,t+Q`0软件从网上下载,如果不知道从什么地方下载,google就是了。
把本次实验用到的三个文件拷贝到/root/2410sQt目录下,以下的步骤是假设你在/root/2410sQt 下操作的。
Qt/Embedded 平台的搭建需要以下几步:
第一步,解压安装包并设置环境变量
tar –xzvf tmake-1.13.tar.gz
AR&K)rL1~0tar –xzvf qt-x11-2.3.2.tar.gz
\Z$ACU9L,@h@0tar –xzvf
].h]X3~k\'x0qt-embedded-2.3.10-free.tar.gz木铎校园 BBS 社区T5@^]0Hb
mv qt-2.3.10 qt-2.3.10-host木铎校园 BBS 社区DHMU!U
export
'cZ'? k|;Vta0TMAKEDIR=$PWD/tmake-1.13
{ YRx%P O ry2b0export QT2DIR=$PWD/qt-2.3.2
;D2?;z3kqlY0export QTEDIR=$PWD/qt-2.3.10-host
3w3Ly X1L0hz/uu0环境变量的设置是非常重要的,它关系到能否正确的安装及编译这些安装包.
AR&K)rL1~0tar –xzvf qt-x11-2.3.2.tar.gz
\Z$ACU9L,@h@0tar –xzvf
].h]X3~k\'x0qt-embedded-2.3.10-free.tar.gz木铎校园 BBS 社区T5@^]0Hb
mv qt-2.3.10 qt-2.3.10-host木铎校园 BBS 社区DHMU!U
export
'cZ'? k|;Vta0TMAKEDIR=$PWD/tmake-1.13
{ YRx%P O ry2b0export QT2DIR=$PWD/qt-2.3.2
;D2?;z3kqlY0export QTEDIR=$PWD/qt-2.3.10-host
3w3Ly X1L0hz/uu0环境变量的设置是非常重要的,它关系到能否正确的安装及编译这些安装包.
注意: 在以下安装中,make命令执行前先执行一下make clean命令.木铎校园 BBS 社区,b*I%r1Qh+nciZ
第二步,编译Qt/Embedded。
第二步,编译Qt/Embedded。
1. Build Qt2.3.2木铎校园 BBS 社区hW![A#Z2V;m
cd $QT2DIR木铎校园 BBS 社区`Q*a&En:qs
export TMAKEPATH=$TMAKEDIR/lib/linux-g++木铎校园 BBS 社区Zx6SO$xJ&@8w
export QTDIR=$QT2DIR木铎校园 BBS 社区5`+e7Lq}@6|
export PATH=$QTDIR/bin:$PATH
s7^wp"?c)U(e0export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
2m4m?(s%n"J3w0make clean
m;fx2i`n;Y0./configure -no-xft
'g4`W2M(~,|b0make木铎校园 BBS 社区5oc~%w8P!X
mkdir $QTEDIR/bin
RVIp0I-S&Y ml0cp bin/uic $QTEDIR/bin/
cd $QT2DIR木铎校园 BBS 社区`Q*a&En:qs
export TMAKEPATH=$TMAKEDIR/lib/linux-g++木铎校园 BBS 社区Zx6SO$xJ&@8w
export QTDIR=$QT2DIR木铎校园 BBS 社区5`+e7Lq}@6|
export PATH=$QTDIR/bin:$PATH
s7^wp"?c)U(e0export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
2m4m?(s%n"J3w0make clean
m;fx2i`n;Y0./configure -no-xft
'g4`W2M(~,|b0make木铎校园 BBS 社区5oc~%w8P!X
mkdir $QTEDIR/bin
RVIp0I-S&Y ml0cp bin/uic $QTEDIR/bin/
2. Build Qvfb木铎校园 BBS 社区;OX,y,D;|b4A!Y
N
export TMAKEPATH=$TMAKEDIR/lib/linux-g++
;x G9Hf8ggR0export QTDIR=$QT2DIR木铎校园 BBS 社区Q7PFiB[N f}aL
export PATH=$QTDIR/bin:$PATH木铎校园 BBS 社区M6W#{*v4I1|
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH木铎校园 BBS 社区4OQ Z V*LukL
cd $QTEDIR/tools/qvfb木铎校园 BBS 社区;jEmz*N-b.N/j C5o
make clean木铎校园 BBS 社区Y7x F\r@ r
tmake -o Makefile qvfb.pro木铎校园 BBS 社区b}\e}W:M
make木铎校园 BBS 社区1w*l7z | ?,grZ
mv qvfb $QTEDIR/bin/
f9SC,xg+E!@0这 一步build qvfb 并建立了从Qt/Embedded 2.3.10 到Qt 2.3.2 的静态库的链接。其中qvfb 工具用来生成Virtual framebuffer,这是一个非常有用的工具,它可以模拟在开发板上的显示情况,如果在Virtual framebuffer 中运行没有问题的话,可以直接通过交叉编译在开发板上运行。
export TMAKEPATH=$TMAKEDIR/lib/linux-g++
;x G9Hf8ggR0export QTDIR=$QT2DIR木铎校园 BBS 社区Q7PFiB[N f}aL
export PATH=$QTDIR/bin:$PATH木铎校园 BBS 社区M6W#{*v4I1|
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH木铎校园 BBS 社区4OQ Z V*LukL
cd $QTEDIR/tools/qvfb木铎校园 BBS 社区;jEmz*N-b.N/j C5o
make clean木铎校园 BBS 社区Y7x F\r@ r
tmake -o Makefile qvfb.pro木铎校园 BBS 社区b}\e}W:M
make木铎校园 BBS 社区1w*l7z | ?,grZ
mv qvfb $QTEDIR/bin/
f9SC,xg+E!@0这 一步build qvfb 并建立了从Qt/Embedded 2.3.10 到Qt 2.3.2 的静态库的链接。其中qvfb 工具用来生成Virtual framebuffer,这是一个非常有用的工具,它可以模拟在开发板上的显示情况,如果在Virtual framebuffer 中运行没有问题的话,可以直接通过交叉编译在开发板上运行。
3. Build Qt/Embedded木铎校园 BBS 社区4}+_3Py*fM8gF*{f
cd $QTEDIR
1F1M y/D:] DA+T z-t0export TMAKEPATH=$TMAKEDIR/lib/qws/linux-x86-g++木铎校园 BBS 社区,B.Yfw%tAKA7Ke
export QTDIR=$QTEDIR
*l9B1?%EG@0export PATH=$QTDIR/bin:$PATH木铎校园 BBS 社区$@b`!v@S'@&z
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
pVf \jDr Y0make clean
4F2w:pn/w@/s)oE0./configure -no-xft -qvfb -depths 4,8,16,32木铎校园 BBS 社区9L+q0I `XH3p/pI+V ^
make
cd $QTEDIR
1F1M y/D:] DA+T z-t0export TMAKEPATH=$TMAKEDIR/lib/qws/linux-x86-g++木铎校园 BBS 社区,B.Yfw%tAKA7Ke
export QTDIR=$QTEDIR
*l9B1?%EG@0export PATH=$QTDIR/bin:$PATH木铎校园 BBS 社区$@b`!v@S'@&z
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
pVf \jDr Y0make clean
4F2w:pn/w@/s)oE0./configure -no-xft -qvfb -depths 4,8,16,32木铎校园 BBS 社区9L+q0I `XH3p/pI+V ^
make
第三步 查看运行结果
如果上面各步都能够成功的编译通过,下面就可以通过运行木铎校园 BBS 社区/IH*B3\BQ)_CV9j
Qt/Embedded 自带的demo 来查看运行结果。
o3cF0N#z%I?+|0 ●在Virtual framebuffer 上运行:木铎校园 BBS 社区&VRV @`3nodX
export QTDIR=$QTEDIR木铎校园 BBS 社区_K!Lqc+yT!C9QZ
export PATH=$QTEDIR/bin:$PATH木铎校园 BBS 社区Z"m;[B%t.Z
export LD_LIBRARY_PATH=$QTEDIR/lib:$QT2DIR/lib:$LD_LIBRARY_PATH木铎校园 BBS 社区6f6J.a(E-C\H
cd $QTEDIR/examples/launcher木铎校园 BBS 社区)T#QJ*@2YEh/P
qvfb -width 640 -height 480 &木铎校园 BBS 社区']5TJ:dG
sleep 10木铎校园 BBS 社区w2JP3H ~ k#[9d
./launcher -qws
Qt/Embedded 自带的demo 来查看运行结果。
o3cF0N#z%I?+|0 ●在Virtual framebuffer 上运行:木铎校园 BBS 社区&VRV @`3nodX
export QTDIR=$QTEDIR木铎校园 BBS 社区_K!Lqc+yT!C9QZ
export PATH=$QTEDIR/bin:$PATH木铎校园 BBS 社区Z"m;[B%t.Z
export LD_LIBRARY_PATH=$QTEDIR/lib:$QT2DIR/lib:$LD_LIBRARY_PATH木铎校园 BBS 社区6f6J.a(E-C\H
cd $QTEDIR/examples/launcher木铎校园 BBS 社区)T#QJ*@2YEh/P
qvfb -width 640 -height 480 &木铎校园 BBS 社区']5TJ:dG
sleep 10木铎校园 BBS 社区w2JP3H ~ k#[9d
./launcher -qws
木铎校园 BBS 社区\$q X:yD
二 Qt/E 的交叉编译
二 Qt/E 的交叉编译
要将我们写好的程序发布到开发板上,我们需要对Qt/Embedded 重新编译,与前面在宿主机上编译类似,步骤如下:
X;ZN }DVO0
X;ZN }DVO0
1. Build Qt/Embedded
tar –xzvf qt-embedded-2.3.10-free.tar.gz
T1yzhck_h0mv qt-2.3.10
PTv;L9Ls0qt-2.3.10-target木铎校园 BBS 社区{] S P3k7F4NB
export TMAKEDIR=$PWD/tmake-1.13木铎校园 BBS 社区+GI4sX2J
export QT2DIR=$PWD/qt-2.3.2木铎校园 BBS 社区;^9oB/{K
export QTEDIR=$PWD/qt-2.3.10-target
T1yzhck_h0mv qt-2.3.10
PTv;L9Ls0qt-2.3.10-target木铎校园 BBS 社区{] S P3k7F4NB
export TMAKEDIR=$PWD/tmake-1.13木铎校园 BBS 社区+GI4sX2J
export QT2DIR=$PWD/qt-2.3.2木铎校园 BBS 社区;^9oB/{K
export QTEDIR=$PWD/qt-2.3.10-target
cd $QTEDIR
^#b9[!X*_&P9J0export TMAKEPATH=$TMAKEDIR/lib/qws/linux-arm-g++木铎校园 BBS 社区|nj*V7Bb
export QTDIR=$QTEDIR木铎校园 BBS 社区6W1d(ew)[ifI
export PATH=$QTDIR/bin:$PATH木铎校园 BBS 社区?z/G5YMS.J
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH木铎校园 BBS 社区h2sDc olzQ
make clean木铎校园 BBS 社区&w K+uH6o6@
./configure -xplatform linux-arm-g++ -no-xft -no-qvfb -depths 4,8,16,32
4k'DF&t*CI0make木铎校园 BBS 社区U+oy ~6?)Dte+m
这步完成后,我们会在/$QTEDIR/lib/目录下面看到libqte.so libqte.so.2 libqte.so.2.3 libqte.so.2.3.10 这四个文件,我们可以使用file 命令来查看这个库文件是否是我们需要的在开发板上跑的库。木铎校园 BBS 社区4l!zR3S^7dh]&U
file libqte.so.2.3.10木铎校园 BBS 社区BO!kJ3xS6W3A&Y$\v
libqte.so.2.3.10: ELF 32-bit LSB shared object, ARM, version 1 (ARM), stripped
^#b9[!X*_&P9J0export TMAKEPATH=$TMAKEDIR/lib/qws/linux-arm-g++木铎校园 BBS 社区|nj*V7Bb
export QTDIR=$QTEDIR木铎校园 BBS 社区6W1d(ew)[ifI
export PATH=$QTDIR/bin:$PATH木铎校园 BBS 社区?z/G5YMS.J
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH木铎校园 BBS 社区h2sDc olzQ
make clean木铎校园 BBS 社区&w K+uH6o6@
./configure -xplatform linux-arm-g++ -no-xft -no-qvfb -depths 4,8,16,32
4k'DF&t*CI0make木铎校园 BBS 社区U+oy ~6?)Dte+m
这步完成后,我们会在/$QTEDIR/lib/目录下面看到libqte.so libqte.so.2 libqte.so.2.3 libqte.so.2.3.10 这四个文件,我们可以使用file 命令来查看这个库文件是否是我们需要的在开发板上跑的库。木铎校园 BBS 社区4l!zR3S^7dh]&U
file libqte.so.2.3.10木铎校园 BBS 社区BO!kJ3xS6W3A&Y$\v
libqte.so.2.3.10: ELF 32-bit LSB shared object, ARM, version 1 (ARM), stripped
有了这个库以后我们就可以把它拷贝到我们的开发板中相应的库目录下面,这里我们选择了开发板上的/usr/lib 目录,将/$QTEDIR/lib/下的libqte.so*复制到/usr/lib 目录下。
首先要建立宿主机和开发板的通讯,假设本机的ip 地址为192.168.0.56 并且/root/share 为共享文件夹。木铎校园 BBS 社区)tuZqP@(I.`
cp –arf /$QTEDIR/lib/libqte.so* /root/share木铎校园 BBS 社区)e2tkB)q)K3Nes9m
启动minicom
;gb8c.s%^$Y0w6t0mount –t nfs –o nolock 192.168.0.56:/root/share /mnt/nfs将文件复制到开发板上
Cz~[!t0cp –arf /mnt/nfs/libqte.so* /usr/lib
cp –arf /$QTEDIR/lib/libqte.so* /root/share木铎校园 BBS 社区)e2tkB)q)K3Nes9m
启动minicom
;gb8c.s%^$Y0w6t0mount –t nfs –o nolock 192.168.0.56:/root/share /mnt/nfs将文件复制到开发板上
Cz~[!t0cp –arf /mnt/nfs/libqte.so* /usr/lib
2. 修改tmake 配置文件木铎校园 BBS 社区X
X1yQ)z
F9ux
vi $ TMAKEDIR/lib/qws/linux-arm-g++/tmake.conf
X{5N oy,R+WK0将其中“TMAKE_LINK= arm-linux-gcc”木铎校园 BBS 社区*FY6q|3^C
“TMAKE_LINK_SHLIB= arm-linux-gcc”木铎校园 BBS 社区s*V\+d,_Y`#SML
修改为:“TMAKE_LINK= arm-linux-g++”木铎校园 BBS 社区8])VD(jm4yp
“TMAKE_LINK_SHLIB= arm-linux-g++”
vi $ TMAKEDIR/lib/qws/linux-arm-g++/tmake.conf
X{5N oy,R+WK0将其中“TMAKE_LINK= arm-linux-gcc”木铎校园 BBS 社区*FY6q|3^C
“TMAKE_LINK_SHLIB= arm-linux-gcc”木铎校园 BBS 社区s*V\+d,_Y`#SML
修改为:“TMAKE_LINK= arm-linux-g++”木铎校园 BBS 社区8])VD(jm4yp
“TMAKE_LINK_SHLIB= arm-linux-g++”
3.生成可执行文件木铎校园 BBS 社区"A@*]%LJy
木铎校园 BBS 社区0Z0uS6U;C:zF0I
这里我们采用了Qt/Embedded自带的一个demo,它在/$QTEDIR/examples/progressbar目录下,这个目录包括下面几个文件: main.cpp、Makefile.in 、progressbar.h 、
木铎校园 BBS 社区0Z0uS6U;C:zF0I
这里我们采用了Qt/Embedded自带的一个demo,它在/$QTEDIR/examples/progressbar目录下,这个目录包括下面几个文件: main.cpp、Makefile.in 、progressbar.h 、
Makefile、progressbar.cpp、progressbar.pro,如果已经有了progressbar 的执行文件,可以使用make clean删除。木铎校园 BBS 社区y}z p:Z.Rz%Y
progen –t app.t –o progressbar.pro
c#B$Xi5u\ N)X(qs0 echo $TMAKEPATH木铎校园 BBS 社区'|'}'c8u+~"K.tB
查看返回的结果的结尾字符是否是“……/qws/linux-arm-g++”,如果不是的话需要在命令行中重新设置TMAKEPATH木铎校园 BBS 社区I/umA$Ac Fq
export TMAKEPATH=/tmake 的安装路径(如$TMAKEDIR)/lib/qws/linux-arm-g++
&iz&})] `+Xxc"h:?0此外还要使QTDIR指向Qt/Embedded 的安装路径,如:
#d#A\H$r5VpmVV0export QTDIR=$QTEDIR 或者直接指定路径木铎校园 BBS 社区 J.r Du%fYF W
export QTDIR=……/qt-2.3.10
progen –t app.t –o progressbar.pro
c#B$Xi5u\ N)X(qs0 echo $TMAKEPATH木铎校园 BBS 社区'|'}'c8u+~"K.tB
查看返回的结果的结尾字符是否是“……/qws/linux-arm-g++”,如果不是的话需要在命令行中重新设置TMAKEPATH木铎校园 BBS 社区I/umA$Ac Fq
export TMAKEPATH=/tmake 的安装路径(如$TMAKEDIR)/lib/qws/linux-arm-g++
&iz&})] `+Xxc"h:?0此外还要使QTDIR指向Qt/Embedded 的安装路径,如:
#d#A\H$r5VpmVV0export QTDIR=$QTEDIR 或者直接指定路径木铎校园 BBS 社区 J.r Du%fYF W
export QTDIR=……/qt-2.3.10
完成了上面的环境变量的设置,并用echo 命令检查无误以后,就可以使用tmake 工具来生成我们需要的makefile 文件,在命令行中输入如下命令:
tmake –o makefile progressbar.pro木铎校园 BBS 社区q"[b l:GM Xx
make
{N4~SqFM2Gwk0如果没出现错误的话就可以在当前目录下找到progressbar这个可执行文件,它就是在我们开发板上的相应目录中运行“./progressbar -qws”就可以运行程序了。
Amoj:A SXA$g{Y0
s TL/L%R/Rk R0 注:1).如果执行命令木铎校园 BBS 社区/XP#c$Q8x!w
[/mnt/nfs]./progressbar -qws
PW"wA\K5O0./progressbar: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or direy
make
{N4~SqFM2Gwk0如果没出现错误的话就可以在当前目录下找到progressbar这个可执行文件,它就是在我们开发板上的相应目录中运行“./progressbar -qws”就可以运行程序了。
Amoj:A SXA$g{Y0
s TL/L%R/Rk R0 注:1).如果执行命令木铎校园 BBS 社区/XP#c$Q8x!w
[/mnt/nfs]./progressbar -qws
PW"wA\K5O0./progressbar: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or direy
我的解决办法是从编译器目录下查找,并拷贝到开发板/usr/lib/中木铎校园 BBS 社区a^EHg7N@%d7z
u)z tz5P0即拷贝/usr/local/arm/3.4.1/arm-linux/lib/libstdc++.so* 到开发板/usr/lib/中木铎校园 BBS 社区`2[:vG wm+^ {v
2).[/mnt/nfs]./progressbar –qws
E,^y6c&o$z!r3iS-G0./progressbar: error while loading shared libraries: libgcc_s.so.1: cannot open shared object file: No such fy
2T7s"Nq4h9K6qew0 方法同上
u)z tz5P0即拷贝/usr/local/arm/3.4.1/arm-linux/lib/libstdc++.so* 到开发板/usr/lib/中木铎校园 BBS 社区`2[:vG wm+^ {v
2).[/mnt/nfs]./progressbar –qws
E,^y6c&o$z!r3iS-G0./progressbar: error while loading shared libraries: libgcc_s.so.1: cannot open shared object file: No such fy
2T7s"Nq4h9K6qew0 方法同上
三. 建立本机Qtopia 虚拟平台
软件:Redhat Linux9.0 for PC + minicom + Embeded Linux for 2410
8\/J$X-o9l6^0tmake-1.13.tar.gz qtopia-free-source-2.1.1.tar.bz2 qt-embedded-2.3.10-free.tar.gz qt-x11-2.3.2.tar.gz
8\/J$X-o9l6^0tmake-1.13.tar.gz qtopia-free-source-2.1.1.tar.bz2 qt-embedded-2.3.10-free.tar.gz qt-x11-2.3.2.tar.gz
将本次实验所需的四个文件拷贝到/root/qtopia 目录下,我们以下的实验都是在这个目录下进行的。
木铎校园 BBS 社区?6\
A?M
宿主机上建立虚拟的Qtopia 环境需要以下几个步骤:木铎校园 BBS 社区H0~%B)W;?
宿主机上建立虚拟的Qtopia 环境需要以下几个步骤:木铎校园 BBS 社区H0~%B)W;?
1. 解压缩安装文件:
tar jxvf qtopia-free-source-2.1.1.tar.bz2木铎校园 BBS 社区F&G~E d i-ud
mv qtopia-2.1.1 qtopia-2.1.1-target木铎校园 BBS 社区?en8y8R u
tar xzf tmake-1.13.tar.gz
4lfo m)Dj'Jm0 tar xzf qt-x11-2.3.2.tar.gz
{}/s+u|R"|2q zf0 tar xzf qt-embedded-2.3.10-free.tar.gz
,o,V7z:n*W3?oPI#m)l0 mv qt-2.3.10 qt-2.3.10-target
mv qtopia-2.1.1 qtopia-2.1.1-target木铎校园 BBS 社区?en8y8R u
tar xzf tmake-1.13.tar.gz
4lfo m)Dj'Jm0 tar xzf qt-x11-2.3.2.tar.gz
{}/s+u|R"|2q zf0 tar xzf qt-embedded-2.3.10-free.tar.gz
,o,V7z:n*W3?oPI#m)l0 mv qt-2.3.10 qt-2.3.10-target
export QPEDIR=$PWD/qtopia-2.1.1-target
#GW+x"{*a#S\A0 export TMAKEDIR=$PWD/tmake-1.13
#GW+x"{*a#S\A0 export TMAKEDIR=$PWD/tmake-1.13
export QT2DIR=$PWD/qt-2.3.2木铎校园 BBS 社区N#A:|%k^F:y`#i
export QTEDIR=$PWD/qt-2.3.10-target
export QTEDIR=$PWD/qt-2.3.10-target
2. Build Qt/X11:
/lU3B0e%|y0cd $QT2DIR木铎校园 BBS 社区~!N3YJK,Q)q8m x3pg
export TMAKEPATH=$TMAKEDIR/lib/linux-g++
-p$M`3mt4c"Qly0export QTDIR=$QT2DIR木铎校园 BBS 社区z%T+f@2sb"M(z!i+u
export PATH=$QTDIR/bin:$PATH木铎校园 BBS 社区q-o+M(f3]
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
8l:dv(r{6Y\D&T0./configure -no-xft
\W7k(S j%q(K%R)U0{eb0make木铎校园 BBS 社区0E$^w%] m Tj.C*?$x
mkdir $QTEDIR/bin
[7K6LI&gV0cp bin/uic $QTEDIR/bin/
/lU3B0e%|y0cd $QT2DIR木铎校园 BBS 社区~!N3YJK,Q)q8m x3pg
export TMAKEPATH=$TMAKEDIR/lib/linux-g++
-p$M`3mt4c"Qly0export QTDIR=$QT2DIR木铎校园 BBS 社区z%T+f@2sb"M(z!i+u
export PATH=$QTDIR/bin:$PATH木铎校园 BBS 社区q-o+M(f3]
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
8l:dv(r{6Y\D&T0./configure -no-xft
\W7k(S j%q(K%R)U0{eb0make木铎校园 BBS 社区0E$^w%] m Tj.C*?$x
mkdir $QTEDIR/bin
[7K6LI&gV0cp bin/uic $QTEDIR/bin/
3. Build Qvfb:
.StOJn0export TMAKEPATH=$TMAKEDIR/lib/linux-g++
?4Nx9zh^nx0export QTDIR=$QT2DIR
@9K7]RJ&[0export PATH=$QTDIR/bin:$PATH:$TMAKEDIR/bin木铎校园 BBS 社区8s2SUG(r k'I[
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
XJi5B5JoQ3`0cd $QTEDIR/tools/qvfb木铎校园 BBS 社区6o UN"l?]
tmake -o Makefile qvfb.pro木铎校园 BBS 社区(jj(f/Svar8C
make
HitE4OW0mv qvfb $QTEDIR/bin/
.StOJn0export TMAKEPATH=$TMAKEDIR/lib/linux-g++
?4Nx9zh^nx0export QTDIR=$QT2DIR
@9K7]RJ&[0export PATH=$QTDIR/bin:$PATH:$TMAKEDIR/bin木铎校园 BBS 社区8s2SUG(r k'I[
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
XJi5B5JoQ3`0cd $QTEDIR/tools/qvfb木铎校园 BBS 社区6o UN"l?]
tmake -o Makefile qvfb.pro木铎校园 BBS 社区(jj(f/Svar8C
make
HitE4OW0mv qvfb $QTEDIR/bin/
4.Build libqte:木铎校园 BBS 社区+nW'MW5g9s+vV \K
cd $QTEDIR
0xz'} ]n(T5@"I0export TMAKEPATH=$TMAKEDIR/lib/qws/linux-x86-g++
sL~:e m,_'@+y)@0export QTDIR=$QTEDIR木铎校园 BBS 社区5kj|5I)hcI`p
export PATH=$QTDIR/bin:$PATH木铎校园 BBS 社区 W3b4MZG1E~7R
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH木铎校园 BBS 社区,q|l!H4l#W$W^'Vh
cp -f $QPEDIR/src/qt/qconfig-qpe.h src/tools/
M*[ oO){ u2c)r5~*L0./configure -system-jpeg -no-xft -qconfig qpe -qvfb -depths 4,8,16,32
AI\5@ p&Gm/h0make sub-src
cd $QTEDIR
0xz'} ]n(T5@"I0export TMAKEPATH=$TMAKEDIR/lib/qws/linux-x86-g++
sL~:e m,_'@+y)@0export QTDIR=$QTEDIR木铎校园 BBS 社区5kj|5I)hcI`p
export PATH=$QTDIR/bin:$PATH木铎校园 BBS 社区 W3b4MZG1E~7R
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH木铎校园 BBS 社区,q|l!H4l#W$W^'Vh
cp -f $QPEDIR/src/qt/qconfig-qpe.h src/tools/
M*[ oO){ u2c)r5~*L0./configure -system-jpeg -no-xft -qconfig qpe -qvfb -depths 4,8,16,32
AI\5@ p&Gm/h0make sub-src
5.Build Qtopia:木铎校园 BBS 社区%s%o#eB f:N6dp
h r
cd $QPEDIR
c Q?,^Qs0export QTDIR=$QTEDIR木铎校园 BBS 社区 O+vz8B0EjNr
export PATH=$QPEDIR/bin:$PATH木铎校园 BBS 社区"RN M2q7E
export木铎校园 BBS 社区#s0KgF,L(Fe*Y"p K
LD_LIBRARY_PATH=$QPEDIR/lib:$LD_LIBRARY_PATH木铎校园 BBS 社区 r0}6P-lV$C/C-}8j
./configure木铎校园 BBS 社区C!Ei#^e+Y"^
make
cd $QPEDIR
c Q?,^Qs0export QTDIR=$QTEDIR木铎校园 BBS 社区 O+vz8B0EjNr
export PATH=$QPEDIR/bin:$PATH木铎校园 BBS 社区"RN M2q7E
export木铎校园 BBS 社区#s0KgF,L(Fe*Y"p K
LD_LIBRARY_PATH=$QPEDIR/lib:$LD_LIBRARY_PATH木铎校园 BBS 社区 r0}6P-lV$C/C-}8j
./configure木铎校园 BBS 社区C!Ei#^e+Y"^
make
和前面编译Qt/Embedded 的基本步骤一样,还可以参考“./configure --help”,来进行选择。为了保证qvfb
能够正确显示qtopia 的结果,我们必须保证环境变量设置正确,我们可以通过“env”命令来检查下面的环境变量,也可以用下面的方法来检查。
qF'~,Qd r0G0
(~6mF v.Mlg0 echo $QPEDIR木铎校园 BBS 社区YVfDT m,y9E:D rZO
/root/qtopia/qtopia-free-2.1.1/木铎校园 BBS 社区h@}FvP;n `NnX'r
echo $QTDIR
XKT1SXk]5]0/root/qtopia/qt-2.3.10木铎校园 BBS 社区7U$K zbjl
echo $LD_LIBRARY_PATH
th_Cq@O)`0/root/qtopia/qtopia-free-2.1.1/lib:/root/qtopia/qt-2.3.10/lib木铎校园 BBS 社区0n lO+O#g&F K n:e9Mp
echo $PATH
Op2Z%hqA,G H0/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
qF'~,Qd r0G0
(~6mF v.Mlg0 echo $QPEDIR木铎校园 BBS 社区YVfDT m,y9E:D rZO
/root/qtopia/qtopia-free-2.1.1/木铎校园 BBS 社区h@}FvP;n `NnX'r
echo $QTDIR
XKT1SXk]5]0/root/qtopia/qt-2.3.10木铎校园 BBS 社区7U$K zbjl
echo $LD_LIBRARY_PATH
th_Cq@O)`0/root/qtopia/qtopia-free-2.1.1/lib:/root/qtopia/qt-2.3.10/lib木铎校园 BBS 社区0n lO+O#g&F K n:e9Mp
echo $PATH
Op2Z%hqA,G H0/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
出现上面的结果就可以正常的显示Virtual framebuffer,我们可以通过下面的命令在Virtual framebuffer 中实现Qtopia。
cd $QPEDIR/bin木铎校园 BBS 社区? B;J*v?
qvfb &木铎校园 BBS 社区#WU*T1xo
sleep 10木铎校园 BBS 社区/S-N0s.iZq0Ha
./qpe.sh
qvfb &木铎校园 BBS 社区#WU*T1xo
sleep 10木铎校园 BBS 社区/S-N0s.iZq0Ha
./qpe.sh
四 Qtopia2.1.1 在2410-S 上的移植
软件:Redhat Linux9.0 for PC + minicom + Embeded Linux for 2410
&n1AD K1F/m0e2fsprogs-libs-1.37.tar.gz,libjpeg-iwmmxt.tar.bz2,qt-embedded-2.3.10-free.tar.gz木铎校园 BBS 社区0L)^M*r-~*u,G\L
,qtopia-free-source-2.1.1.tar.bz2,qt-x11-2.3.2.tar.gz,qt-x11-free-3.3.4.tar.bz2,
[byKe4h)U&^aD?0tmake-1.13.tar.gz,tslib.tar.gz,buildqtopia.sh木铎校园 BBS 社区5O7l?A6q&yh
&n1AD K1F/m0e2fsprogs-libs-1.37.tar.gz,libjpeg-iwmmxt.tar.bz2,qt-embedded-2.3.10-free.tar.gz木铎校园 BBS 社区0L)^M*r-~*u,G\L
,qtopia-free-source-2.1.1.tar.bz2,qt-x11-2.3.2.tar.gz,qt-x11-free-3.3.4.tar.bz2,
[byKe4h)U&^aD?0tmake-1.13.tar.gz,tslib.tar.gz,buildqtopia.sh木铎校园 BBS 社区5O7l?A6q&yh
1.实验可以分为以下几个步骤进行:
(1)
在装有linux 的pc
机上安装交叉编译环境。安装光盘时所安装的编译器版本较低,不能正常编译QT程序,所以编译前需要安装Qt/tools/arm-linux-gcc-
3.4.1.tar.bz2,并在/root/.bash_profile中修改编译器搜索路径。
U0q\EN5Qk0(2) 编译库文件:
v9j OAO+V0(3) 编译qt-x11-2.3.2:
K3~2Sa8?JCiK0(4) 编译安装qt-embedded-2.3.2木铎校园 BBS 社区s5C/v4N!H/{ l
(5)编译安装QTOPIA木铎校园 BBS 社区]KH{)~4f0l
(6) 将需要拷贝到开发板上的文件整理到一个单独的文件夹里面
u:i5GC%|#kkab0在本次实验中,buildqtopia.sh文件已为大家做好了以上几步,我们可以直接运行该文件进行编译。大家可以分析buildqtopia.sh 内容,掌握编译的步骤。
U0q\EN5Qk0(2) 编译库文件:
v9j OAO+V0(3) 编译qt-x11-2.3.2:
K3~2Sa8?JCiK0(4) 编译安装qt-embedded-2.3.2木铎校园 BBS 社区s5C/v4N!H/{ l
(5)编译安装QTOPIA木铎校园 BBS 社区]KH{)~4f0l
(6) 将需要拷贝到开发板上的文件整理到一个单独的文件夹里面
u:i5GC%|#kkab0在本次实验中,buildqtopia.sh文件已为大家做好了以上几步,我们可以直接运行该文件进行编译。大家可以分析buildqtopia.sh 内容,掌握编译的步骤。
2. 编译步骤:
cd src木铎校园 BBS 社区/xbO&bR
n
./buildqtopia.sh
MY[pg;{Rc6S3V*{0当编译完成后,在src/qtopia-free-2.1.1/image/opt/Qtopia 下是编译完成的Qtopia 桌面环境。
(ls:A1R"P$S3y W*G~0说明:在编译完成后,src 下的各个目录对应如下软件包:
)h&}#O@_u0e2fsprogs-libs-1.37 ext2 文件系统工具包,Qtopia 用到了其中的libuuid木铎校园 BBS 社区&`e'fc ZM2c D
e2fs-install ext2 工具包编译结果
.R*Sa#]yz(TZ T8r7l0jpeg-6b jpeg 解码库木铎校园 BBS 社区Dd'dH0})Ch-LASL
jpeg-install jpeg 编译结果
G5Ln$|brw4p0tslib 触摸屏工具包木铎校园 BBS 社区BmF9t0]:hlh"~
tslib-install 触摸屏工具包编译结果
&x8\-t.o}0tmake-1.13 tmake 工具,编译Qtopia 时需要使用
4xv zy u Pt0qt-2.3.2 Qt/X11-2.3.2 及编译结果, 编译Qtopia 时需要使用其中的工具木铎校园 BBS 社区+U*{1e6i;gbZ
qt-x11-free-3.3.4 Qt/X11-3.3.4 及编译结果,编译Qtopia 时需要使用其中的工具
9Y)z"l1oh0qt-2.3.10 Qt/Embedded 2.3.10 及编译结果
-A(M%f4N N(@T0qtopia-free-2.1.1 Qtopia 2.1.1 及编译结果
./buildqtopia.sh
MY[pg;{Rc6S3V*{0当编译完成后,在src/qtopia-free-2.1.1/image/opt/Qtopia 下是编译完成的Qtopia 桌面环境。
(ls:A1R"P$S3y W*G~0说明:在编译完成后,src 下的各个目录对应如下软件包:
)h&}#O@_u0e2fsprogs-libs-1.37 ext2 文件系统工具包,Qtopia 用到了其中的libuuid木铎校园 BBS 社区&`e'fc ZM2c D
e2fs-install ext2 工具包编译结果
.R*Sa#]yz(TZ T8r7l0jpeg-6b jpeg 解码库木铎校园 BBS 社区Dd'dH0})Ch-LASL
jpeg-install jpeg 编译结果
G5Ln$|brw4p0tslib 触摸屏工具包木铎校园 BBS 社区BmF9t0]:hlh"~
tslib-install 触摸屏工具包编译结果
&x8\-t.o}0tmake-1.13 tmake 工具,编译Qtopia 时需要使用
4xv zy u Pt0qt-2.3.2 Qt/X11-2.3.2 及编译结果, 编译Qtopia 时需要使用其中的工具木铎校园 BBS 社区+U*{1e6i;gbZ
qt-x11-free-3.3.4 Qt/X11-3.3.4 及编译结果,编译Qtopia 时需要使用其中的工具
9Y)z"l1oh0qt-2.3.10 Qt/Embedded 2.3.10 及编译结果
-A(M%f4N N(@T0qtopia-free-2.1.1 Qtopia 2.1.1 及编译结果
3. 安装步骤:木铎校园 BBS 社区;TI#mDw#^k
1) Qtopia木铎校园 BBS 社区 K!I ln Nm
cd src/qtopia-free-2.1.1/image/opt/
{U?9v1J,Uv0tar cvjf /tmp/qtopia-install.tar.bz2 Qtopia
nc#[o@Arw0将/tmp/qtopia-install.tar.bz2 下载到目标机,并解压缩到某个目录,假设为/mnt/yaffs。
1) Qtopia木铎校园 BBS 社区 K!I ln Nm
cd src/qtopia-free-2.1.1/image/opt/
{U?9v1J,Uv0tar cvjf /tmp/qtopia-install.tar.bz2 Qtopia
nc#[o@Arw0将/tmp/qtopia-install.tar.bz2 下载到目标机,并解压缩到某个目录,假设为/mnt/yaffs。
2) 相关文件
_ G#Q6i7?x0将src/qtopia.sh 下载到目标机的/usr/bin 目录下.将src/e2fs-install/lib/libuuid.so*下载到目标机的/usr/lib 目录下.将src/jpeg-install/lib/libjpeg.so*下载到目标机的/usr/lib 目录下
_ G#Q6i7?x0将src/qtopia.sh 下载到目标机的/usr/bin 目录下.将src/e2fs-install/lib/libuuid.so*下载到目标机的/usr/lib 目录下.将src/jpeg-install/lib/libjpeg.so*下载到目标机的/usr/lib 目录下
3) 目标机上的处理在目标机上执行:木铎校园 BBS 社区n jor#J
cd /usr木铎校园 BBS 社区o7g2R'~;}Q*]
ln -s /mnt/yaffs/Qtopia qpe木铎校园 BBS 社区+xA3G8z0?(z
chmod +x /usr/bin/qtopia.sh
cd /usr木铎校园 BBS 社区o7g2R'~;}Q*]
ln -s /mnt/yaffs/Qtopia qpe木铎校园 BBS 社区+xA3G8z0?(z
chmod +x /usr/bin/qtopia.sh
注: 光盘中没有提供qtopia.sh文件,下面是qtopia.sh文件木铎校园 BBS 社区m/x _,]E
//qtopia.sh
//qtopia.sh
#!/bin/sh木铎校园 BBS 社区)j1HJVf
export QTDIR=/usr/qpe
FPFO+O#B2H0export QPEDIR=/usr/qpe
ZWi+Rp\0export KDEDIR=/usr/qpe
export QTDIR=/usr/qpe
FPFO+O#B2H0export QPEDIR=/usr/qpe
ZWi+Rp\0export KDEDIR=/usr/qpe
export TSLIB_TSDEVICE=/dev/input/event0
i|)b X#^ I] p^0export TSLIB_CONFFILE=/tmp/ts.conf
i|)b X#^ I] p^0export TSLIB_CONFFILE=/tmp/ts.conf
export TSLIB_CONSOLEDEVICE=none
` h'~h#m4y;Cl0export TSLIB_CALIBFILE=/tmp/ts-calib.conf木铎校园 BBS 社区Wxvm:wh H-q,y6KE-|
export木铎校园 BBS 社区 D:y3a9NJ/dcY
TSLIB_PLUGINDIR=/usr/qpe/lib木铎校园 BBS 社区j2^9_B-}S(^J3|2X
export QT_TSLIBDIR=/usr/qpe/lib/木铎校园 BBS 社区NwJ2[|~
export
7vX0_#D5\)q0LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/qpe/lib/木铎校园 BBS 社区0LMp S!L!R]
export QWS_SIZE=640x480
q!y~2ydg1r-k-y-T0export木铎校园 BBS 社区+@&hU#W\u*b
QWS_MOUSE_PROTO="TPanel:/dev/input/event0 USB"木铎校园 BBS 社区/ri!x5X1_+F&}:VH E3p
export LANG=zh_CN
4k3ktJ(Bjo0J0insmod
cf"`1qb0/mnt/yaffs/touchscreen/ts-uptech.o
#sM4J{*jH H0cp /usr/qpe/etc/ts.conf /tmp木铎校园 BBS 社区6\ Cykw$?0CT8^
cd /usr/qpe/bin/
` h'~h#m4y;Cl0export TSLIB_CALIBFILE=/tmp/ts-calib.conf木铎校园 BBS 社区Wxvm:wh H-q,y6KE-|
export木铎校园 BBS 社区 D:y3a9NJ/dcY
TSLIB_PLUGINDIR=/usr/qpe/lib木铎校园 BBS 社区j2^9_B-}S(^J3|2X
export QT_TSLIBDIR=/usr/qpe/lib/木铎校园 BBS 社区NwJ2[|~
export
7vX0_#D5\)q0LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/qpe/lib/木铎校园 BBS 社区0LMp S!L!R]
export QWS_SIZE=640x480
q!y~2ydg1r-k-y-T0export木铎校园 BBS 社区+@&hU#W\u*b
QWS_MOUSE_PROTO="TPanel:/dev/input/event0 USB"木铎校园 BBS 社区/ri!x5X1_+F&}:VH E3p
export LANG=zh_CN
4k3ktJ(Bjo0J0insmod
cf"`1qb0/mnt/yaffs/touchscreen/ts-uptech.o
#sM4J{*jH H0cp /usr/qpe/etc/ts.conf /tmp木铎校园 BBS 社区6\ Cykw$?0CT8^
cd /usr/qpe/bin/
if [ "$1" = "c" ]; then
6r2E |;MM0./ts_calibrate木铎校园 BBS 社区*vZ+N9n:v @ }!H;u+N
fi
6r2E |;MM0./ts_calibrate木铎校园 BBS 社区*vZ+N9n:v @ }!H;u+N
fi
if [ -f "$TSLIB_CALIBFILE" ]; then
./qpe &>/dev/null木铎校园 BBS 社区]}kRE I
else
(G'n~/U ma0./ts_calibrate
5bv,V7C3mI*P5^0./qpe &>/dev/null木铎校园 BBS 社区WRzg }*p
fi木铎校园 BBS 社区iKD\8_
clear
else
(G'n~/U ma0./ts_calibrate
5bv,V7C3mI*P5^0./qpe &>/dev/null木铎校园 BBS 社区WRzg }*p
fi木铎校园 BBS 社区iKD\8_
clear
相关阅读:
- Qt参考文档 (行云流水, 2007-8-09)
- QtEmbedded/Qtopia FAQ (行云流水, 2007-8-13)


