QT Embedded环境的建立之Arm Linux嵌入式

移动开发
本文介绍的是QT Embedded环境的建立之Arm-Linux嵌入式QT Embedded 3.x系列比QT Embedded 2.x系列有非常大的改进,大大提高了开发进度,不再使用tmake,安装也更简单。

本文介绍的是QT Embedded,虽然现在版本已经是4.5了,那QT Embedded 3.x系列比QT Embedded  2.x系列有非常大的改进,大大提高了开发进度,不再使用tmake,安装也更简单。但目前在网上关于QT Embedded  3.x系列的介绍还是比较少,所以本文介绍一下QT Embedded  3.x系列的安装。

一、建立ARM交叉编译工具链

在安装QT Embedded 之前,应确保ARM-Linux交叉编译工具链已经建立,如果还没有可以参考以下步骤建立。

1、下载交叉编译工具cross-2.95.3.tar.bz2(或其他版本如:cross-3.4.4.tar.bz2),这是已经制作好的ARM交叉编译工具链,只需解压及建交环境变量即可使用。

2、把文件cross-2.95.3.tar.bz2拷贝到一个文件夹,这里我用:/usr/local/ARM这个目录。 注意后面建立环境变量时要与之对应。

3、解压 tar -xjvf    cross-2.95.3.tar.bz2

4、建立环境变量 export    PATH=/usr/local/ARM/2.95.3/bin:$PATH

或者也可以写进文件 ~/.bashrc中,这样就不用每次开机都export啦。

  1. vi     ~/.bashrc 

在后面加上 export    PATH=/usr/local/ARM/2.95.3/bin:$PATH

到此ARM-Linux交叉编译工具链就已经建好了。

二、编译QT

1、QT/E自由版可到官网ftp下载。网址是:ftp://ftp.trolltech.com/qt/source/ 。可自己选择一个版本下载,个人认为QT/E 3.x系列比较好用,不过QT/E 2.x系列在网上的资料比较多。但建议不用qt/e 3.3.x 的版本,因为在本人开发的过程当中试用过qt/e 3.3.4和qt/e3.3.8,发现它们在ARM开发板上占CPU的资源特高,一直占cpu 98%左右,现在我还没找到原因,不知道有没有哪位朋友也遇到这个问题。推荐用qt/e 3.1.0版本,我正在用,没遇到什么问题。

(注:问题已经得到解决,原来是键盘接口没做好,等有空与大家分享一下移植键盘接口的过程)

2、在这里,本人假设用的是 qt-embedded-free-3.1.0.tar.bz2

3、把文件qt-embedded-free-3.1.0.tar.bz2 拷贝到一个文件夹,这里我用:/usr/local/ARM这个目录。 注意后面建立环境变量时要与之对应。

4、解压 tar   -xjvf   qt-embedded-free-3.1.0.tar.bz2 

把解压后的文件夹qt-embedded-free-3.1.0改为qte。(可以不改,这里是为了方便,注意后面建立环境变量时要与之对应)  

  1. mv     qt-embedded-free-3.1.0     qte 

5、建立环境变量

  1. vi     ~/.bashrc 

在后面加上

  1. export QTDIR=/usr/local/ARM/qte  
  2. export QTEDIR=$QTDIR  
  3. export PATH=$QTDIR/bin:$PATH  
  4. export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH 

(请重新登陆,以使得环境变量生效)

6、配置QT

进入QT/E目录:    

  1. cd $QTDIR 

输入:  

  1. ./configure -embedded ARM   -thread -no-cups -qvfb -depths 4,8,16,32 

上述选项: -embedded ARM 指目标平台为ARM; -thread 表示支持qt线程,本人开发当中用到; -qvfb 表示支持虚拟缓冲帧工具qvfb;-depths 4,8,16,32 表示支持4,8,16,32 位的显示颜色深度。还有很多选项就不一一列举,请查看 ./configure -help。

此外还有一个选项我没用的是 -qconfig local,你可以把一些开关变量写到一个文件qconfig-local.h 中,并把它放到$QTDIR/src/tools下。可参考这个目录下的qconfig-small.h、qconfig-medium.h 、qconfig-large.h等文件,直接使用它们也行,如: -qconfig small 。通过这些开关变量,可以把一些开发当中用不着的构件去掉,减少qt库的大小。这里要对QT比较熟练,初学者可先不理。

本人在家里编译到这里曾出现编译 $QTDIR/include/qvaluestack.h 这个文件的时候出错,后来把qt3.3.8对应的文件拷贝过来覆盖便通过了,估计是与gcc的版本不兼容的问题,我在公司里没出现过这种问题)

7、编译

make sub-src      // 指定按精简方式编译开发包,也就是说有些Qt 类未被编
译。

8、测试

至此编译工作完成,***测试一下是否能正常使用。我们可以用QT自带的例子来测试,如:

  1. cd $QTDIR/examples/aclock      //或你自己新建一个QT工程也行  
  2.  
  3. make clean                              //把原来的清掉  
  4.  
  5. rm    *.pro       Makefile                       //删掉,重新建立工程文件  
  6.  
  7. qmake   -project  
  8.  
  9. qmake   -spec $QTDIR/mkspecs/qws/Linux-ARM-g++ -o Makefile         

 -spec指定目标板的配置文件,这里我做的是Linux ARM平台,注意在这里,$QTDIR/mkspecs/qws/Linux-ARM-g++ 它不是编译器,是一个配置文件,而编译时用的编译器是我们在***步建立的ARM交叉编译工具链里面的编译器。

  1. make       

如果没出错就表示你的QT/E环境已经成功建立。如果提示说cannot   find   -lqte, 那么你试一下修改Makefile文件,找到-lqte ,把它改为-lqte-mt再make一次一般就行了。这是因为如果用到QT线程或其它一些原因,它生成的库不再是libqte.so.3.1.0,而是libqte-mt.so.3.1.0,所以它便找不到了。

三、移植到开发板(以下都是在目标机环境下)

1、新建一个目录,如:/qt/lib。进入此目录 cd   /qt/lib

2、通过 ftp 把上面生成的qt库文件libqte-mt.so.3.1.0下载到开发板/qt/lib/目录下。(注意:不要用wget 下载,会破坏库文件,从而出现

  1. ld.so: dynamic-link.h: 62: elf_get_dynamic_info: Assertion `! "bad dynamic tag"'''''''''''''' failed!.这种错误) 

3、创建qt库连接:

  1. ln   -s libqte-mt.so.3.1.0     libqte-mt.so  
  2. ln   -s   libqte-mt.so.3.1.0     libqte-mt.so.3  
  3. ln   -s   libqte-mt.so.3.1.0     libqte-mt.so.3.1 

4、建立环境变量

  1. vi     ~/.bashrc 

在后面加上

  1. export QTDIR=/qt  
  2. export QTEDIR=$QTDIR  
  3. export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH 

4、到此目标板的环境已经建好。现在可以把上面的例子aclock下载到目标板上试一下能不能跑起来!

在开发板控制台下输入: ./aclock -qws

如果能跑起来但是键盘用不了,那是正常的情况,因为键盘、鼠标等设备的接口还没加进QT Embedded 的原因,而这个不是一两句话能说清的,所以留到以后再另外补充!

补充一点:如果有类似这样的提示: "./aclock: error while loading shared libraries: libstdc++.so.6: cannot load shared object file: No such file or directory." 你可以从我们***步建立的ARM交叉编译工具链里的/usr/local/ARM/2.95.3/ARM-Linux/lib/目录下找到相应的库文件下载到开发板的 /lib 目录下即可。

小结:QT Embedded环境的建立之Arm-Linux嵌入式的内容介绍完了,不过现在QT Embedded的版本通常是4.5。不过还是希望本文章能帮你解决在建立环境时出现的问题。

责任编辑:zhaolei 来源: 互联网
相关推荐

2011-07-05 15:42:02

QT 嵌入式 Embedded

2011-06-21 11:10:28

Qt Embedded

2009-06-26 16:18:40

Windows Emb

2011-06-09 10:28:54

QT 嵌入式

2011-07-05 15:59:18

Qt 嵌入式 linux

2011-06-13 14:00:55

Qt Designer linux

2009-07-17 16:06:59

ARM嵌入式开发

2011-04-22 10:02:02

Ubuntu嵌入式开发环境

2010-01-07 10:45:38

嵌入式Linux入门

2009-06-11 11:09:02

Linux嵌入式开发环境

2010-03-02 14:09:15

Windows Emb

2009-04-10 13:11:33

opensusesuselinux

2009-04-10 13:17:32

opensusesuselinux

2011-06-29 18:17:20

Konqueror Embedded 浏览器

2011-06-13 13:35:06

Qt Embedded QT

2011-01-14 13:13:23

嵌入式Linux开发

2022-11-24 11:15:49

IoTLinux设备树机制

2014-05-26 15:14:04

DIGIA嵌入式Qt

2019-04-10 11:50:00

微软Windows XPWindows 10

2010-05-14 10:29:25

Windows Emb
点赞
收藏

51CTO技术栈公众号