Qt交叉编译工具建立 上篇
创始人
2024-08-01 14:41:04
0

本文主要内容为编译器的安装,安装与建立Qt 桌面运行环境,Qt/E 的交叉编译,建立本机Qtopia 虚拟平台,Qtopia2.1.1 在2410-上的移植,预备:编译器安装:
 
编译器: arm-linux-gcc-3.4.1.tar.bz2(软件从网上下载,如果不知道从什么地方下载,google就是了。)

把软件arm-linux-gcc-3.4.1.tar.bz2拷贝到/usr/local下,在终端执行如下命令安装:

  1. tar -xjf arm-linux-gcc-3.4.1.tar.bz2 

生成的编译工具在目录/usr/local/arm/3.4.1/bin下,修改/etc/profile,增加如下一行。这可以让我们直接运行arm-linux-gcc,而不必将其绝对路径都写出来,不过这得重新启动后才生效:

  1. pathmunge /usr/local/arm/3.4.1/bin 

硬件:UP-NETARM2410S

这一步,不一定要下载同样的版本的交叉编译工具,我用的是2.95.3,在执行完这一步的时候,把环境变量加入到profile以后,注消一下,以便于以后的路径里面是arm-linux-g++.
下面的安装以及环境变量的设置,按照这里说的进行,但是有一点要注意,在configure的时候选择large模式,要不可能会出现make出错,可以试试,如果出错了,再make clean就是了.

我按照说明,只进行到了第二点结束,因为我认为,qtopia暂时没有必要试用.

还有我觉得这个里面使用的版本太低,我会尝试都使用qt3的版本的库文件.

还有他在交叉生成编译文件的时候,使用了progen和tmake,他的用法有点不对,我觉得,我是这么用的:

假设hello工程有hello.h和hello.cpp两个文件,先用progen生成pro文件,其实progen的意思就是pro文件的gernerate(生成)工具.

  1. progen -o hello.pro  
  2. tmake hello.pro -o Makefile  
  3. make 

中间可以查看一下makefile文件的内容,注意,CXX=arm-linux-g++,LINK=arm-linux-g++.

再可以把make后的文件看看,file hello,系统会显示这个是一个elf文件就是说这个是一个arm上面执行的文件!

交叉编译生成可执行文件的时候,也就是在操作(三)下面的第三点的时候,如果新开的一个终端,那么以前的定义的一些临时的环境变量是消失了的,一般系统也带有qt,而我们的嵌入式的qt版本比系统的低级,最好是不要在系统路径下面设置环境变量,tmake已经加入了系统路径了,所以我们要重新设置一下,或者说定义一下.如下:

  1. echo $TMAKEPATH 

查看返回的结果的结尾字符是否是“……/qws/linux-arm-g++”,如果不是的话需要在命令行中重新设置TMAKEPATH

  1. export TMAKEPATH=/tmake 的安装路径(如$TMAKEDIR)/lib/qws/linux-arm-g++ 

我的系统就是:

  1. export TMAKEPATH=/gg/tmake-1.13/lib/qws/linux-arm-g++ 

再设置QTDIR和QTEDIR:

QTEDIR要设置成为QTE的文件夹,export QTEDIR=$PWD/qt-2.3.10-target,PWD是我所在的路径,我的是/gg,也就是export QTEDIR=/gg/qt-2.3.10-target再export QTDIR=$QTEDIR就可以直接使用progen以及tmake工具了.以上是如何生成elf格式的文件,要生成主机上使用的.o文件怎么弄呢?

第一种方法:

首先安装系统时候也安装了高版本的qt,可以使用这个qt,用qmake工具,首先用qtdesigner创建一个pro文件和一些相应的.h和.cpp文件,比如hello.cpp然后,qmake hello.pro,再make生成Makefile,再make成功的话就可以./hello了.

第二种方法:

就是用下面安装的低级版本的qt库来运行,条件就是开始已经安装了这些库,有一点要注意的就是要按照安装时候设置的路径重新定义一下环境变量.否则会出错的.

当然了这里也要用qtdesigner创建一个pro文件和一些相应的.h和.cpp文件,然后用progen和tmake工具生成makefile!

还有一点要注意就是qvfb这个工具不一定要用tools里面的,可以在网上 新下载一个编译之后运行,可以把路径加入系统路径以后方便自己用.

安装与建立Qt 桌面运行环境

软件:PC 机操作系统REDHAT LINUX 9.0 +MINICOM + ARM-LINUX 开发环境

  1. tmake-1.13.tar.gz qt-embedded-2.3.10-free.tar.gz  
  2. qt-x11-2.3.2 .tar.gz 

软件从网上下载,如果不知道从什么地方下载,google就是了。
 
把本次实验用到的三个文件拷贝到/root/2410sQt目录下,以下的步骤是假设你在/root/2410sQt 下操作的。
 
Qt/Embedded 平台的搭建需要以下几步:
 
第一步,解压安装包并设置环境变量

  1. tar –xzvf tmake-1.13.tar.gz  
  2. tar –xzvf qt-x11-2.3.2.tar.gz  
  3. tar –xzvf  
  4. qt-embedded-2.3.10-free.tar.gz  
  5. mv  qt-2.3.10 qt-2.3.10-host  
  6. export TMAKEDIR=$PWD/tmake-1.13  
  7. export QT2DIR=$PWD/qt-2.3.2  
  8. export QTEDIR=$PWD/qt-2.3.10-host 

环境变量的设置是非常重要的,它关系到能否正确的安装及编译这些安装包.
 
注意: 在以下安装中,make命令执行前先执行一下make clean命令.

第二步,编译Qt/Embedded
 
1. Build Qt2.3.2

 

  1. cd $QT2DIR  
  2. export TMAKEPATH=$TMAKEDIR/lib/linux-g++  
  3. export QTDIR=$QT2DIR  
  4. export PATH=$QTDIR/bin:$PATH  
  5. export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH  
  6. make clean  
  7. ./configure -no-xft 

这个地方要注意 ,large 模式

  1. make  
  2. mkdir $QTEDIR/bin  
  3. cp bin/uic $QTEDIR/bin/ 

2. Build Qvfb

  1. export TMAKEPATH=$TMAKEDIR/lib/linux-g++  
  2. export QTDIR=$QT2DIR  
  3. export PATH=$QTDIR/bin:$PATH  
  4. export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH  
  5. cd $QTEDIR/tools/qvfb  
  6. make  clean  
  7. tmake -o Makefile qvfb.pro  
  8. make  
  9. mv qvfb $QTEDIR/bin/ 

这一步build qvfb 并建立了从Qt/Embedded 2.3.10 到Qt 2.3.2 的静态库的链接。其中qvfb 工具用来生成Virtual framebuffer,这是一个非常有用的工具,它可以模拟在开发板上的显示情况,如果在Virtual framebuffer 中运行没有问题的话,可以直接通过交叉编译在开发板上运行。
 
3. Build Qt/Embedded

  1. cd $QTEDIR  
  2. export TMAKEPATH=$TMAKEDIR/lib/qws/linux-x86-g++  
  3. export QTDIR=$QTEDIR  
  4. export PATH=$QTDIR/bin:$PATH  
  5. export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH  
  6. make clean  
  7. ./configure -no-xft -qvfb -depths 4,8,16,32  
  8. make 

第三步 查看运行结果

如果上面各步都能够成功的编译通过,下面就可以通过运行Qt/Embedded 自带的demo 来查看运行结果。

在Virtual framebuffer 上运行:

  1. export QTDIR=$QTEDIR  
  2. export PATH=$QTEDIR/bin:$PATH  
  3. export LD_LIBRARY_PATH=$QTEDIR/lib:$QT2DIR/lib:$LD_LIBRARY_PATH  
  4. cd $QTEDIR/examples/launcher  
  5. qvfb -width 640 -height 480 &  
  6. sleep 10  
  7. ./launcher -qws 

小结:本篇内容介绍完了,想要继续深入,请参考 Qt交叉编译工具建 中篇 ,最后希望本文对你有帮助!

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
着眼MAC地址,解救无法享受D... 在安装了DHCP服务器的局域网环境中,每一台工作站在上网之前,都要先从DHCP服务器那里享受到地址动...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...