深度解析 Qt 4.5.3 移植全过程

移动开发
本文介绍的是Qt 4.5.3 移植全过程,QT 4.5是开跨平台GUI应用程序的理想选择,先来看内容。

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

  1. #tar -jxvf arm-linux-gcc-3.4.1.tar.bz2  

解压过程需要一段时间,解压后的文件形成了 usr/local/ 文件夹,进入该文件夹,将arm文件夹拷贝到/usr/local/下

  1. # cd usr/local/   
  2. #cp -rv arm /usr/local/  

现在交叉编译程序集都在/usr/local/arm/3.4.1/bin下面了

(3)修改环境变量,把交叉编译器的路径加入到PATH。(有三种方法,这里只写一种)

  1. # vi ~/.bashrc  

在最后加上:

  1. export PATH=$PATH:/usr/local/arm/3.4.1/bin  

(4)立即使新的环境变量生效,不用重启电脑

  1. #source ~/.bashrc  

(5)检查是否将路径加入到PATH:

  1. # echo $PATH  

显示的内容中有/usr/local/arm/bin,说明已经将交叉编译器的路径加入PATH。至此,交叉编译环境安装完成。

(6)测试是否安装成功

  1. # arm-linux-gcc -v  

上面的命令会显示arm-linux-gcc信息和版本,这是我显示的信息:

  1. Reading specs from /usr/local/arm/3.4.1/lib/gcc/arm-linux/3.4.1/specs   
  2. 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   
  3. --prefix=/usr/local/arm/3.4.1 --with-headers=/usr/local/arm/3.4.1/arm   
  4. -linux/include --with-local-prefix=/usr/local/arm/3.4.1/arm-linux --disable   
  5. -nls --enable-threads=posix --enable-symvers=gnu --enable-__cxa_atexit --enable- languages=c,c++ --enable-shared --enable-c99 --enable-long-long   
  6. Thread model: posix   
  7. gcc version 3.4.1  

到这里就成功安装好了交叉编译环境

2、安装qt-x11

进入下载页面:选择Download Qt libraries 4.5 for Linux/X11(120 Mb)

  1. # aptitude install libxtst-dev   
  2. # tar -zxvf qt-x11-opensource-src-4.5.3.tar.gz   
  3. # cd qt-x11-opensource-src-4.5.3   
  4. # ./configure   
  5. # make   
  6. # make install  

qt-x11 被安装到此目录下/usr/local/Trolltech/Qt-4.5.3

编译qvfb:

  1. # cd qt-x11-opensource-src-4.5.3/tools/qvfb   
  2. # make  

至此,qt-x11安装完毕完毕

#p#

3、安装qt-embedded

选择支持arm的体系结构

  1. # tar -zxvf qt-embedded-linux-opensource-src-4.5.3.tar.gz   
  2. # cd qt-embedded-linux-opensource-src-4.5.3   
  3. #./configure -embedded arm -xplatform qws/linux-arm-g++ -no-qt3support -qt-mouse-linuxtp(我自己的设置,你可以通过查看./configure -help来设置)   
  4. #make   
  5. #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文件

把下面复制到文件中

  1. export QTEDIR=/usr/local/Trolltech/QtEmbedded-4.5.3-arm   
  2. export PATH=/usr/local/Trolltech/QtEmbedded-4.5.3-arm/bin:$PATH   
  3. exportLD_LIBRARY_PATH=/usr/local/Trolltech/QtEmbedded-4.5.3-arm/lib:$LD_LIBRARY_PATH  

每次用的时候进行设置

  1. #. set-env.sh   
  2. 或者是  
  3.  source set-env.sh  

安装qt-embed请参考我的这个帖子:http://www.qtcn.org/bbs/read.php?tid=22600

4、移植到开发板

下面通过NFS方式来测试是否成功(你必须提前配置好nfs)

先准备好2个nfs目录,取名为nftsroot

一个是用来备用的,取名为fonts

(1)准备库和字体

  1. #cp -a /usr/local/Trolltect/QtopiaCore-4.3.0-arm/lib /nfsroot  

然后在usr/local/Trolltect/QtopiaCore-4.3.0-arm里面收索到这些库

  1. librt.so,librt.so.1,libstdc++.so,libstdc++.so.6,libstdc++.so.6.0.1  

笔者就是在运行时就提示要这些库,所有大家还是先准备好来,然后复制到/nfsroot/lib里

  1. #ls /nfsroot/lib   
  2. fonts libQtScript.prl libQtSvg.so.4.5.3   
  3. libgcc_s.so libQtScript.so libQtTest.la   
  4. libgcc_s.so.1 libQtScript.so.4 libQtTest.prl   
  5. libQtCore.la libQtScript.so.4.5 libQtTest.so   
  6. libQtCore.prl libQtScript.so.4.5.3 libQtTest.so.4   
  7. libQtCore.so libQtScriptTools.la libQtTest.so.4.5   
  8. libQtCore.so.4 libQtScriptTools.prl libQtTest.so.4.5.3   
  9. libQtCore.so.4.5 libQtScriptTools.so libQtXml.la   
  10. libQtCore.so.4.5.3 libQtScriptTools.so.4 libQtXml.prl   
  11. libQtGui.la libQtScriptTools.so.4.5 libQtXml.so   
  12. libQtGui.prl libQtScriptTools.so.4.5.3 libQtXml.so.4   
  13. libQtGui.so libQtSql.la libQtXml.so.4.5   
  14. libQtGui.so.4 libQtSql.prl libQtXml.so.4.5.3   
  15. libQtGui.so.4.5 libQtSql.so librt-2.3.2.so   
  16. libQtGui.so.4.5.3 libQtSql.so.4 librt.so   
  17. libQtNetwork.la libQtSql.so.4.5 librt.so.1   
  18. libQtNetwork.prl libQtSql.so.4.5.3 libstdc++.so   
  19. libQtNetwork.so libQtSvg.la libstdc++.so.6   
  20. libQtNetwork.so.4 libQtSvg.prl libstdc++.so.6.0.1   
  21. libQtNetwork.so.4.5 libQtSvg.so pkgconfig   
  22. libQtNetwork.so.4.5.3 libQtSvg.so.4   
  23. libQtScript.la libQtSvg.so.4.5  

当然这些库文件不是每个都需要,用户可以根据自己的应用来选择

#p#

接下来将开发板和主机通过网线连接起来,并在开发板里进行mount

  1. #mount -t nfs 192.168.0.10:/nfsroot /mnt -o nolock   
  2. #ls /mnt   
  3. lib  

接下来事字体(在lib目录的fonts),字体比较麻烦,

根据文档说明,Qtopia默认查找字体的目录是/usr/local/Trolltech/QtEmbedded-4.5.3/lib/fonts

我们有两种方式来挂载字体库。

第一种:

  1. #mount -t ramfs ramfs /usr   
  2. #cd /usr   
  3. #mkdir local && mkdir local/Trolltech   
  4. #ln -s /mnt local/Trolltech/QtEmbedded-4.5.3-arm   
  5. #ls /usr/local/Trolltech/QtEmbedded-4.5.3-arm/lib/fonts  

这样我们就配置好了。

如果上一种方法不行,看下面这种,一定可以!

第二种:

首先用到刚才的备用的nfs目录 fonts(看名字就晓得用来挂载字体库的)

  1. #cp -arf /usr/local/Trolltect/QtopiaCore-4.3.0-arm/lib/fonts /fonts  

在开发板里

  1. #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的程序

  1. #qmake -project   
  2. #qmake  

得到一个hello的arm可执行程序(通过file命令来查看它所属的cpu)

并将该

  1. #cp hello /nfsroot  

然后在超级终端里运行

  1. #export LD_LIBRARY_PATH=/mnt/lib:$LD_LIBRARY_PATH   
  2. #cd /mnt   
  3. #./hello -qws  

这样就能看到你的运行程序了!

小结:Qt 4.5.3 移植全过程介绍完了,希望本篇文章对你有帮助!

责任编辑:zhaolei 来源: CSDN博客
相关推荐

2011-09-06 15:38:20

QT安装

2009-06-10 16:55:42

cygwin netb安装

2017-04-25 18:03:11

Caffe深度学习框架

2010-02-22 13:38:50

Python解析器

2010-06-11 13:15:07

UML软件

2011-02-22 10:46:02

Samba配置

2010-07-07 09:11:31

Eclipse UML

2011-04-18 15:56:10

软件测试

2009-12-08 17:56:16

WCF配置

2009-04-13 12:37:18

2011-01-21 17:51:52

2011-07-02 13:42:24

Qt 移植

2011-06-29 10:46:01

Qt Eembedded Linux

2012-11-06 10:19:18

Java自定义加载Java类

2010-11-19 10:11:49

Oracle物化视图

2010-03-01 17:01:03

Python编程技巧

2010-03-10 13:24:45

Zend Debugg

2010-06-17 13:10:09

Linux Grub修

2011-03-11 10:39:02

YUM安装LAMP

2010-07-21 14:51:19

telnet-serv
点赞
收藏

51CTO技术栈公众号