勇者斗恶龙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_profile。Ok,编译器安装完成。
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 –qws,hello出现在开发板上了
如果./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在不同路径下)