Qt 4.5.3 移植全过程是本文要介绍的内容,在概述也提到了QT 4.5是开跨平台GUI应用程序的理想选择,那么在本文主要是讲开发环境,先来看本文。
1、安装交叉编译环境
(1)下载arm-linux-gcc-3.4.1.tar.bz2(建议用的这个版本的,有些低版本的交叉编译工具在编译时会出错)
arm-linux-gcc-3.4.1.tar.bz2 的下载地址如下:
http://www.handhelds.org/download/projects/toolchain/arm-linux-gcc-3.4.1.tar.bz2
(2)解压 arm-linux-gcc-3.4.1.tar.bz2
- #tar -jxvf arm-linux-gcc-3.4.1.tar.bz2
解压过程需要一段时间,解压后的文件形成了 usr/local/ 文件夹,进入该文件夹,将arm文件夹拷贝到/usr/local/下
- # cd usr/local/
- #cp -rv arm /usr/local/
现在交叉编译程序集都在/usr/local/arm/3.4.1/bin下面了
(3)修改环境变量,把交叉编译器的路径加入到PATH。(有三种方法,这里只写一种)
- # vi ~/.bashrc
在最后加上:
- export PATH=$PATH:/usr/local/arm/3.4.1/bin
(4)立即使新的环境变量生效,不用重启电脑
- #source ~/.bashrc
(5)检查是否将路径加入到PATH:
- # echo $PATH
显示的内容中有/usr/local/arm/bin,说明已经将交叉编译器的路径加入PATH。至此,交叉编译环境安装完成。
(6)测试是否安装成功
- # arm-linux-gcc -v
上面的命令会显示arm-linux-gcc信息和版本,这是我显示的信息:
- Reading specs from /usr/local/arm/3.4.1/lib/gcc/arm-linux/3.4.1/specs
- Configured with: /work/crosstool-0.27/build/arm-linux/gcc-3.4.1-glibc-2.3.2/gcc-3.4.1/configure --target=arm-linux --host=i686-host_pc-linux-gnu
- --prefix=/usr/local/arm/3.4.1 --with-headers=/usr/local/arm/3.4.1/arm
- -linux/include --with-local-prefix=/usr/local/arm/3.4.1/arm-linux --disable
- -nls --enable-threads=posix --enable-symvers=gnu --enable-__cxa_atexit --enable- languages=c,c++ --enable-shared --enable-c99 --enable-long-long
- Thread model: posix
- gcc version 3.4.1
到这里就成功安装好了交叉编译环境
2、安装qt-x11
进入下载页面:选择Download Qt libraries 4.5 for Linux/X11(120 Mb)
- # aptitude install libxtst-dev
- # tar -zxvf qt-x11-opensource-src-4.5.3.tar.gz
- # cd qt-x11-opensource-src-4.5.3
- # ./configure
- # make
- # make install
qt-x11 被安装到此目录下/usr/local/Trolltech/Qt-4.5.3
编译qvfb:
- # cd qt-x11-opensource-src-4.5.3/tools/qvfb
- # make
至此,qt-x11安装完毕完毕
#p#
3、安装qt-embedded
选择支持arm的体系结构
- # tar -zxvf qt-embedded-linux-opensource-src-4.5.3.tar.gz
- # cd qt-embedded-linux-opensource-src-4.5.3
- #./configure -embedded arm -xplatform qws/linux-arm-g++ -no-qt3support -qt-mouse-linuxtp(我自己的设置,你可以通过查看./configure -help来设置)
- #make
- #make install
qt-embeded 被安装在这个目录下/usr/local/Trolltech/QtEmbedded-4.5.3-arm 或者是/usr/local/Trolltech/QtEmbedded-4.5.3-generic
一般在/usr/local/Trolltech/QtEmbedded-4.5.3-arm
这里你可以新建一个set-env.sh文件
把下面复制到文件中
- export QTEDIR=/usr/local/Trolltech/QtEmbedded-4.5.3-arm
- export PATH=/usr/local/Trolltech/QtEmbedded-4.5.3-arm/bin:$PATH
- exportLD_LIBRARY_PATH=/usr/local/Trolltech/QtEmbedded-4.5.3-arm/lib:$LD_LIBRARY_PATH
每次用的时候进行设置
- #. set-env.sh
- 或者是
- source set-env.sh
安装qt-embed请参考我的这个帖子:http://www.qtcn.org/bbs/read.php?tid=22600
4、移植到开发板
下面通过NFS方式来测试是否成功(你必须提前配置好nfs)
先准备好2个nfs目录,取名为nftsroot
一个是用来备用的,取名为fonts
(1)准备库和字体
- #cp -a /usr/local/Trolltect/QtopiaCore-4.3.0-arm/lib /nfsroot
然后在usr/local/Trolltect/QtopiaCore-4.3.0-arm里面收索到这些库
- librt.so,librt.so.1,libstdc++.so,libstdc++.so.6,libstdc++.so.6.0.1
笔者就是在运行时就提示要这些库,所有大家还是先准备好来,然后复制到/nfsroot/lib里
- #ls /nfsroot/lib
- fonts libQtScript.prl libQtSvg.so.4.5.3
- libgcc_s.so libQtScript.so libQtTest.la
- libgcc_s.so.1 libQtScript.so.4 libQtTest.prl
- libQtCore.la libQtScript.so.4.5 libQtTest.so
- libQtCore.prl libQtScript.so.4.5.3 libQtTest.so.4
- libQtCore.so libQtScriptTools.la libQtTest.so.4.5
- libQtCore.so.4 libQtScriptTools.prl libQtTest.so.4.5.3
- libQtCore.so.4.5 libQtScriptTools.so libQtXml.la
- libQtCore.so.4.5.3 libQtScriptTools.so.4 libQtXml.prl
- libQtGui.la libQtScriptTools.so.4.5 libQtXml.so
- libQtGui.prl libQtScriptTools.so.4.5.3 libQtXml.so.4
- libQtGui.so libQtSql.la libQtXml.so.4.5
- libQtGui.so.4 libQtSql.prl libQtXml.so.4.5.3
- libQtGui.so.4.5 libQtSql.so librt-2.3.2.so
- libQtGui.so.4.5.3 libQtSql.so.4 librt.so
- libQtNetwork.la libQtSql.so.4.5 librt.so.1
- libQtNetwork.prl libQtSql.so.4.5.3 libstdc++.so
- libQtNetwork.so libQtSvg.la libstdc++.so.6
- libQtNetwork.so.4 libQtSvg.prl libstdc++.so.6.0.1
- libQtNetwork.so.4.5 libQtSvg.so pkgconfig
- libQtNetwork.so.4.5.3 libQtSvg.so.4
- libQtScript.la libQtSvg.so.4.5
当然这些库文件不是每个都需要,用户可以根据自己的应用来选择
#p#
接下来将开发板和主机通过网线连接起来,并在开发板里进行mount
- #mount -t nfs 192.168.0.10:/nfsroot /mnt -o nolock
- #ls /mnt
- lib
接下来事字体(在lib目录的fonts),字体比较麻烦,
根据文档说明,Qtopia默认查找字体的目录是/usr/local/Trolltech/QtEmbedded-4.5.3/lib/fonts
我们有两种方式来挂载字体库。
第一种:
- #mount -t ramfs ramfs /usr
- #cd /usr
- #mkdir local && mkdir local/Trolltech
- #ln -s /mnt local/Trolltech/QtEmbedded-4.5.3-arm
- #ls /usr/local/Trolltech/QtEmbedded-4.5.3-arm/lib/fonts
这样我们就配置好了。
如果上一种方法不行,看下面这种,一定可以!
第二种:
首先用到刚才的备用的nfs目录 fonts(看名字就晓得用来挂载字体库的)
- #cp -arf /usr/local/Trolltect/QtopiaCore-4.3.0-arm/lib/fonts /fonts
在开发板里
- #mount -t nfs 192.168.0.10:/fonts /usr/local/Trolltech/QtEmbedded-4.5.3-arm -o nolock
这样就把字体库链接到 /usr/local/Trolltech/QtEmbedded-4.5.3/lib/fonts目录来了
第二种方法是我同学想出来的,很不错吧,他的博客是:http://hi.baidu.com/armlinuxhouse/blog/item/c2fb91ca42b0811d7f3e6f10.html 里面有很多好的文章!
5、交叉编译Hello World 程序
首先写一个hello.cpp的程序
- #qmake -project
- #qmake
得到一个hello的arm可执行程序(通过file命令来查看它所属的cpu)
并将该
- #cp hello /nfsroot
然后在超级终端里运行
- #export LD_LIBRARY_PATH=/mnt/lib:$LD_LIBRARY_PATH
- #cd /mnt
- #./hello -qws
这样就能看到你的运行程序了!
小结:Qt 4.5.3 移植全过程介绍完了,希望本篇文章对你有帮助!