勇者斗恶龙11小徽章:QTE

来源:百度文库 编辑:偶看新闻 时间:2024/05/09 19:18:28

最近的一个项目选用了QT,所以着手进行移植,以前移植过这东西,可时间久了,早已忘却,网上有很多关于移植QTE的东西,整理了一下,省的日后再用还得Google Baidu

移植用到的软件tmake-1.13.tar.gz   qt-embedded-2.3.10-free.tar.gz qt-x11-2.3.2 .tar.gz (这些都可以从http://trolltech.com/上下载到,更高版本的QTE早已发布,只是以前的资料中有这些,就直接拿来用了)

步骤:

1. 安装编译器arm-linux-gcc-3.4.1,其安装路径为/xxx(自己定义安装路径,随意),安装完后在/root/.bash_profile文件在PATH后添加上:/xxx/usr/local/arm/3.4.1/bin/,这用来指定编译器的路径。或者也可以在/etc/profile文件中修改,方法同上,或者加上

pathmunge /xxx/usr/local/arm/3.4.1/bin/ 这一句,效果和修改PATH环境变量一样。然后

source /root/.bash_profileOk,编译器安装完成。

2. 解压tmake-1.13.tar.gz   qt-embedded-2.3.10-free.tar.gz qt-x11-2.3.2 .tar.gz,假设三者解压完成的路径为/QT/ tmake-1.13    /QT/ qt-2.3.10     /QT/ qt-2.3.2

3. 声明一些必需的环境变量,在/etc/profile中加上

TMAKEDIR= /QT/ tmake-1.13

QTEDIR= /QT/ qt-2.3.10

QT2DIR= /QT/ qt-2.3.2

export TMAKEDIR   QTEDIR   QT2DIR

TMAKEDIR : 指向用于编译 Qt/Embedded Tmake 工具

QT2DIR : 指向 Qt-X11 2.3.2 的文件夹

QTEDIR : 指向 Qt-Embedded 2.3.10 的文件夹

4. 写了三个脚本文件,x11.sh   qvfb.sh    qte.sh,分别是编译Qt2.3.2 Qvfb Qt/Embedded时需要用到的环境变量

x11.sh

export TMAKEPATH=$TMAKEDIR/lib/linux-g++

export QTDIR=$QT2DIR

export PATH=$QTDIR/bin:$PATH

export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

qvfb.sh

export TMAKEPATH=$TMAKEDIR/lib/linux-g++

export QTDIR=$QT2DIR

export PATH=$QTDIR/bin:$PATH

export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

   

qte.sh

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

5. 编译Qt2.3.2

执行./x11.sh

cd $QT2DIR

./ configure -no-xft   //出现选项时都输入 yes

make

cp –arf bin/uic $QTEDIR/bin/

6. 编译Qvfb qvfb 工具用来生成 Virtual framebuffer,它可以模拟在开发板上的显示情况

执行./qvfb.sh

cd $QTEDIR/tools/qvfb

/root/2410sQt/tmake-1.13/bin/tmake -o Makefile qvfb.pro

make

mv qvfb $QTEDIR/bin/  

7. 编译qte

执行./qte.sh

cd $QTEDIR

./configure -no-xft -qvfb -depths 4,8,16,32     

Yes

5

make

以上的这些步骤完成了qt桌面运行环境的安装和建立,下面就可以到qte的安装目录下去执行demo程序看看。

cd $QTEDIR/examples/launche

qvfb -width 640 -height 480 &

sleep 10

./launcher –qws

这时你可以看launcher这个demo程序在qvfb中显示了出来,但这个编译好的lanucher却不能在开发板上运行,问题出在第7步编译qte

qte.sh中的第一行export TMAKEPATH=$TMAKEDIR/lib/qws/linux-x86-g++指明了交叉编译的是x86版本,要想在开发板上运行,需要把qte.sh中的第一行改为

export TMAKEPATH=$TMAKEDIR/lib/qws/linux-arm-g++,然后

执行./qte.sh

cd $QTEDIR

./configure -xplatform linux-arm-g++ -no-xft -no-qvfb -depths 4,8,16,32  

Make

重新编译qte,编译完成后可以用file 命令查看$QTEDIR/lib/目录下的 libqte.so libqte.so.2 libqte.so.2.3 libqte.so.2.3.10 这四个库文件是否是我们需要的在开发板上跑的库

file libqte.so.2.3.10     如果显示

libqte.so.2.3.10: ELF 32-bit LSB shared object, ARM, version 1 (ARM), not stripped

OK,,那就妥了,如果不是,那就重新检查环境变量的设置,重新编译。

接下来将$QTEDIR/lib/下的 libqte.so*复制到开发板的/usr/lib 目录下,并将pc$QTEDIR/lib/fonts下的所有文件复制到开发板/usr/lib/fonts下,然后修改 tmake 配置文件

vi $ TMAKEDIR/lib/qws/linux-arm-g++/tmake.conf

将其中     TMAKE_LINK= arm-linux-gcc

TMAKE_LINK_SHLIB= arm-linux-gcc”

修改为: TMAKE_LINK= arm-linux-g++

TMAKE_LINK_SHLIB= arm-linux-g++”

cd $QTEDIR/examples/hello 目录下,试试demo能不能在开发板上运行

$TMAKEDIR/bin/progen –t app.t –o hello.pro

$TMAKEDIR/bin/tmake –o makefile hello.pro

make

把编译好的hello copy到开发板上,在开发板上执行

export QTDIR=/usr

./hello –qwshello出现在开发板上了

如果./hello –qws 后提示error while loading shared libraries: libqte.so.2: cannot open shared object file: No such file or directory

那么export LD_LIBRARY_PATH=/usr/lib后再./hello –qws

需要注意的问题

qte.sh中的第一行改为

export TMAKEPATH=$TMAKEDIR/lib/qws/linux-arm-g++后,编译好的qte程序就不能在qvfb中运行了,否则会提示cannot execute binary file的错误,原因很简单,就是交叉编译的是ARM版本,却试图在X86主机上运行,可以用file命令查看可执行文件(不是shell)是arm还是x86版本,所以吗,想用qvfb的话就得在qvfb中看了模拟的效果后,重新编译qte,再挪到板子上执行,“模拟”和“实际”不可兼得(除非安装两个qte在不同路径下)