Qt/Qte-4.7.2开发环境搭建及Micro2440的移植(笔记)

14 篇文章 0 订阅

写的不错,转载了。


虽然网上有不少关于这方面的资料,想了想还是自己写个总结,毕竟各人有各人的问题,这篇文章也主要是作为个人的学习记录,需要的朋友可以参考哈,老手高手们就不用看了哈。。

之前已经搭建过友善之臂提供的qtopia-2.20开发环境,但用着用着愈发觉着不爽。为何??Qtopia-2.20是基于Qt-Embedded2.3的。2.3版本哪!!!现在Qt/Qte的最新版本是Qt4.8beta。虽然用qtopia2.2的朋友还不少,但是作为新手的小弟,入门学的是现在流行的4.x版本(实际上Qt4.x也发行很久了吧),在PC上编译测试无错的程序拿到qtopia中编译便错漏百出,原因很明显的就是因为版本问题。2.3版本果断无法支持4.x的。于是便有了下文。

好了。前言类的废话说的有点多了。现在进入正题。

1.材料准备

先从官网上下载Qt的源码包

http://qt.nokia.com/downloads-cn

注意,从4.6版本起,Qt的嵌入式版本还有PC版本已经集合为一个包了,所以你只需下载一个源码包即可。

图方便的话就下个Qt SDK,里面集成了Qt库(PC版),Qt Creator,省去了编译Qt PC版的麻烦。

还有友善之臂提供的qtopia文件系统包 root_qtopia.tar.gz

http://ishare.iask.sina.com.cn/f/12505146.html

(官网上的好像更新为Rootfs_qtopia_Qt4,当然有Qt4版的就更好了)

我电脑上的源码包是 qt-everywhere-opensource-src-4.7.2.tar.gz,友善的qtopia文件系统包 root_qtopia.tar.gz,同时还有Qt SDK:qt-sdk-linux-x86-opensource-2010.05.1.bin,系统为UBUNTU 11.04。

2.搭建开发环境

这一部分分为三步,分别为编译Qt的PC版,嵌入式开发x86版,嵌入式开发arm版。简单解释下Qt的这三个版本。PC版用于开发PC桌面应用。x86版编译后的程序运行于PC端的qvfb模拟器,是为了模拟程序在目标平台上的运行情况。而arm版的Qt通过交叉编译得到在arm开发板上运行的程序。

编译PC版Qt

将源码包qt-everywhere-opensource-src-4.7.2.tar.gz复制到 /tmp目录下,解压,配置,编译,安装

tar zvf qt-everywhere-opensource-src-4.7.2.tar.gz
cd qt-everywhere-opensource-src-4.7.2
./configure -prefix (yourWay)
make
make install


编译过程相当漫长,图方便的话就安装QtSDK吧,里面集成了Qt4.7.0库,QtCreator和相关开发工具。

直接./qt-sdk-linux-x86-opensource-2010.05.1.bin安装(我就是SDK安装的)

实际上如果不需要作桌面开发的话,这一步完全可以省去

编译x86版本Qte

在原目录下 make clean ,重新配置编译文件

make clean
./configure -prefix /opt/QtEmbedded-4.7.2/x86 -embedded x86 -qt-gfx-qvfb -qt-kbd-qvfb -qt-mouse-qvfb
make
make install


 编译安装完成后还需要编译qvfb,进入PC版安装目录,我的是SDK安装,目录是qtsdk-2010.05

cd qtsdk-2010.05/qt/tools/qvfb
http://www.cnblogs.com/bin/qmake qvfb.pro


此时错误出现了

WARNING: /opt/qtsdk-2010.05/qt/tools/qvfb/qvfb.pro:38: Unable to find file for inclusion /tools/shared/deviceskin/deviceskin.pri 


查找deviceskin.pri:

locate deviceskin.pri

输出:(找不到的话 updatedb 更新下数据库)

/opt/qtsdk-2010.05/qt/tools/shared/deviceskin/deviceskin.pri

很明显应该是qvfb.pro出错,于是vi之,定位到38行:

include($$QT_SOURCE_TREE/tools/shared/deviceskin/deviceskin.pri)

查看文件发现其中并没有对QT_SOURCE_TREE的定义,而后面还有两处引用到QT_SROUCE_TREE,于是在前面添加该变量的定义

QT_SOURCE_TREE=/opt/qtsdk-2010.05/qt

再次qmake便没有错误了。编译的时候我的机子上面是报错了,视各人环境而异,我就把错误简单列出来并给出我的解决方法:

缺少XTest.h     --->    安装libXtst-dev
缺少XInput.h    --->    安装libxi-dev
缺少libGLU.so    --->    /usr/lib下只有libGLU.so.1,所以增加软链接:ln -s libGLU.so.1 libGLU.so
缺少libGL.so    --->    在/usr/lib下建立到/usr/lib/mesa的软链接 ln -s /usr/lib/mesa/libGL.so.1/usr/lib/libGL.so


编译完成后把qvfb的可执行文件复制到/opt/QtEmbedded-4.7.2/x86/bin中

编译arm版本Qte

#请确认是否安装 arm-linux-gcc,可以到友善的官网下,我用的是他提供的4.3.2版本。

编译前还需安装tslib以支持触摸屏,下载地址:

http://download.csdn.net/source/3291565

这个包是可用的,不过配置完configure后还需要小改Makefile

找到/usr/local/arm/4.4.3/bin/,由于我机子之上装的是4.3.2,路径为/usr/local/arm/4.3.2,所以把这段改为/usr/local/arm/4.3.2/bin。

编译  -->  安装:make --> make install

进入 qt-everywhere-opensource-src 目录,make clean,新建myconfig文件,编辑如下:

复制代码
#!/bin/sh
./configure \
-prefix /opt/QtEmbedded-4.7.2/arm\
-opensource \
-confirm-license \
-release -shared \
-embedded arm \
-xplatform qws/linux-arm-g++\
-depths 16,18,24\
-fast \
-optimized-qmake \
-pch \
-qt-sql-sqlite \
-qt-libjpeg \
-qt-zlib \
-qt-libpng \
-qt-freetype \
-little-endian -host-little-endian \
-no-qt3support \
-no-libtiff -no-libmng \
-no-opengl \
-no-mmx -no-sse -no-sse2 \
-no-3dnow \
-no-openssl \
-no-webkit \
-no-qvfb \
-no-phonon \
-no-nis \
-no-opengl \
-no-cups \
-no-glib \
-no-xcursor -no-xfixes -no-xrandr -no-xrender \
-no-separate-debug-info \
-nomake examples -nomake tools -nomake docs \
-D__ARM_ARCH_5TEJ__ \
-qt-mouse-tslib -I/usr/local/tslib/include -L/usr/local/tslib/lib
复制代码


最后一个给出的是tslib安装的路径。

上面这段编译参数也是我从网上找的,可以通过 ./configure --help 查看相关信息

编译前最好检查一下下列几个包是否安装,否则编译时会出错:

libpng-dev,  libjpeg-dev, libzlib-dev

 

接下来就是编译安装的阶段了:

make

make install

至此,Qt/Qte的开发环境搭建就算完成了。


3.移植

我是用nfs作为根文件系统来启动开发板的。默认下Ubuntu是不装nfs服务的,所以必须在主机上安装nfs。

apt-get install nfs-kernel-server

安装nfs-kernel-server会同时安装nfs-common和portmap,nfs-common是nfs客户端服务,portmap提供端口映射服务,RPC(远程调用,nfs是基于RPC的)使用时portmap必须运行。

简单讲下nfs服务的配置

首先配置protmap

vi /etc/default/portmap, 如果有 “-i127.0.0.1”字符串就将其去掉。

vi /etc/hosts.deny  (拒绝访问的IP地址,这里对所有的都禁用)

portmap:ALL
lockd:ALL
mountd:ALL
rquotad:ALL
statd:ALL


vi /etc/hosts.allow  (允许访问的IP地址,添加你所允许的进去)

portmap:192.168.1.
lockd:192.168.1.
mountd:192.168.1.
rquotad:192.168.1.
statd:192.168.1.


保存后重启portmap服务以使配置生效:

/etc/init.d/portmap restart

接着配置nfs服务

vi /etc/exports

/opt/FriendlyARM/Micro2440/root_qtopia          *(rw,sync,no_root_squash)

/opt/FriendlyARM/Micro2440/root_qtopia 是共享的目录,*表示对所有的IP开放,rw表示有读写权限,sync表示同步读写,no_root_squash表示登录用户有root权限
(说明一下在我的PC上portmap中的hosts.allow要设为*,exports也要设为*才能够正常启动,这个问题我一直没搞懂,恳请大家指点!)

重新加载以使配置生效

service nfs-kernel-server reload

如果nfs服务还未启动则:

exportfs -r

service nfs-kernel-server start

程序移植

接着把前面准备的root_qtopia压缩包挪到/opt/Friendly/Micro2440,解压得到root_qtopia目录,把Qte相关库文件和tslib库文件copy到root_qtopia目录下:

cd/opt/FriendlyARM/Micro2440/root_qtopia
mkdir ./usr/local/Qte-4.7.2
cp -r /opt/QtEmbedde-4.7.2/arm/lib ./usr/local/Qte-4.7.2
cp -r /usr/local/tslib ./usr/local/


这样子就把arm板平台环境搭好了。

用交叉网线连接PC机和开发版。注意一定是要交叉网线。有路由器的话可以分别连到路由器上,这样PC也可以上网。

然后设置PC机和开发板的IP地址,我这里PC机设为:192.168.1.100;开发板设为:192.168.1.200 。

开发板设为NAND - FLASH启动。连接串口终端。

上电,并“快速”的按下开发板上 K1 ~ K6任意一按键,进入supervivi模式。

复制代码
##### FriendlyARM BIOS 2.0 for 2440 #####                                       
[x] format NAND FLASH for Linux                                                 
[v] Download vivi                                                               
[k] Download linux kernel                                                       
[y] Download root_yaffs image                                                   
[a] Absolute User Application                                                   
[n] Download Nboot for WinCE                                                    
[l] Download WinCE boot-logo                                                    
[w] Download WinCE NK.bin                                                       
[d] Download & Run                                                              
[z] Download zImage into RAM                                                    
[g] Boot linux from RAM                                                         
[f] Format the nand flash                                                       
[b] Boot the system                                                             
[s] Set the boot parameters                                                     
[u] Backup NAND Flash to HOST through USB(upload)                               
[r] Restore NAND Flash from HOST through USB                                    
[q] Goto shell of vivi                                                          
[i] Version: 0945-2K                                                            
Enter your selection: q                                                         
Supervivi> param set linux_cmd_line "console=ttySAC0 root=/dev/nfs nfsroot=192.168.1.100:/opt/FriendlyARM/Micro2440/root_qtopia
       ip=192.168.1.200:192.168.1.100:192.168.1.255:255.255.255.0:hust-cassvin:eth0:off"
Supervivi> boot
复制代码


如果开发板能启动qtopia图形界面,那么恭喜你,nfs文件系统挂载成功。接下来就可以做程序移植了。

修改/opt/FriendlyARM/Micro/root_qtopia/bin/qtopia以添加环境变量

将原来的

复制代码
export TSLIB_TSDEVICE=/dev/input/event0 
export TSLIB_CONFFILE=/usr/local/etc/ts.conf
export TSLIB_PLUGINDIR=/usr/local/lib/ts
export TSLIB_CALIBFILE=/etc/pointercal
export QTDIR=/opt/Qtopia
export QPEDIR=/opt/Qtopia
export PATH=$QTDIR/bin:$PATH
export LD_LIBRARY_PATH=$QTDIR/lib:/usr/local/lib:$LD_LIBRARY_PATH
复制代码


修改为:

复制代码
export TSLIB_TSDEVICE=/dev/input/event0 
export TSLIB_ROOT=/usr/local/tslib export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts export TSLIB_CALIBFILE=/etc/pointercal export QTDIR=/opt/Qtopia export QPEDIR=/opt/Qtopia
export QTE4=/usr/local/Qte-4.7.2 export QT_QWS_FONTDIR=$QTE4/lib/fonts:$QT_QWS_FONTDIR export PATH=$TSLIB_ROOT/bin:$QTDIR/bin:$PATH export LD_LIBRARY_PATH=$TSLIB_ROOT/lib:$QTE4/lib:$QTDIR/lib:/usr/local/lib:$LD_LIBRARY_PATH
复制代码


注意上面的环境变量最好照着设,否则程序执行的时候会出现一些奇怪的错误。例如之前我因为没添加 QT_QWS_FONTDIR这个变量,程序运行时报出这样的错误

QFontDatabase: Cannot find font directory /opt/QtEmbbed-4.7.2/arm/lib/fonts - is Qt installed correctly?


/opt/QtEmbbed-4.7.2/arm/是我的arm版Qte安装目录,由于环境中没有指定字体路径,所以程序默认跑到安装目录下去查找,但是我的Qte安装目录有没有挂载到nfs服务上面去,所以。。。

把要执行的程序拿到目录 /opt/FriendlyARM/Micro/root_qtopia/opt/Qtopia/bin下,写好该程序对应的desktop文件拿到目录/opt/FriendlyARM/Micor/root_qtopia/opt/Qtopia/apps/Application下。重启开发板。在Qtopia的Application选项卡里面会有你刚才放的desktop文件,just click and youwill success!!!

(有关desktop文件可以看我转的这篇:http://www.cnblogs.com/cassvin/articles/2127388.html

如果想要在终端下面执行程序,也可以,不过执行前需要配置好环境变量。环境变量??刚才不是已经配置好了吗??怎么现在还要配。。呵呵。。没错。。不信你输入指令:echo $PATH试试看看PATH是不是我们刚才配置的那个。。一开始我对这点也觉得很困惑。后来研究/root_qtopia/bin/qtopia这个shell文件的时候我才明白是怎么回事这里面。请看qtopia最后一段代码:

exec $QPEDIR/bin/qpe 1>/dev/null 2>/dev/null


这段代码意思是在shell文件最后运行 /root_qtopia/bin/qpe这个程序。

在开发板的终端上输入:ps -ux 查看进程,唉,还真的,有个叫qpe的进程“活着”!!!

到了现在就清楚了吧,刚才配好的环境变量只是在qtopia这个图形系统下生效,对终端是无影响的。(qpe是终端进程的子进程)。

(如果一开始对Micro2440/mini2440的qtopia文件系统启动过程熟悉的话就不会犯这个错误了,有时间我会写关于这个文件系统启动的分析的,不过网上似乎也有)

好了,写个脚本以在终端启动程序,假设我们要启动的程序为books,存放于 /root_qtopia/opt/Qtopia/bin

复制代码
#!/bin/sh

export TSLIB_TSDEVICE=/dev/input/event0 
export TSLIB_ROOT
=/usr/local/tslib export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts export TSLIB_CALIBFILE=/etc/pointercal export QTDIR=/opt/Qtopia export QPEDIR=/opt/Qtopia
export QTE4
=/usr/local/Qte-4.7.2 export QT_QWS_FONTDIR=$QTE4/lib/fonts export PATH=$TSLIB_ROOT/bin:$QTDIR/bin:$PATH export LD_LIBRARY_PATH=$TSLIB_ROOT/lib:$QTE4/lib:$QTDIR/lib:/usr/local/lib:$LD_LIBRARY_PATH /opt/Qtopia/bin/books -qws
复制代码


这样子就可以顺利的在终端启动应用程序了。

Over,大体就是这样了。。写的不好。。见笑了。。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: target-qte-4.8.5-to-hostpc是一个可以从目标平台下载到主机电脑的软件。目标平台可以指嵌入式系统或其他类似设备,而主机电脑通常是指个人电脑或者服务器等。通过将目标平台与主机电脑连接,在主机电脑上安装target-qte-4.8.5-to-hostpc,我们可以方便地从目标平台上下载相关的数据、文件或者应用程序。 下载target-qte-4.8.5-to-hostpc的步骤如下: 1. 打开您的主机电脑,并确保已连接到目标平台。您可以使用串口、网络或者USB等方式连接。 2. 打开一个网页浏览器,并搜索target-qte-4.8.5-to-hostpc的下载地址。您可以在相关的官方网站或者开发者社区中找到。 3. 在网站上找到适用于您的主机电脑操作系统的版本,如Windows、Linux或者Mac等。 4. 单击下载按钮,将target-qte-4.8.5-to-hostpc保存到您的主机电脑的本地目录中。 5. 打开下载的文件,并按照安装向导的指示进行安装。通常情况下,您只需要点击“下一步”按钮并接受许可协议即可完成安装过程。 6. 安装完成后,您可以在主机的开始菜单或者桌面上找到target-qte-4.8.5-to-hostpc的快捷方式。 7. 双击快捷方式启动软件,并按照软件的使用指南进行操作。 8. 在软件界面上,您将看到从目标平台下载文件的选项。选择您想要下载的文件,然后点击下载按钮进行操作。 9. 下载完成后,您可以在主机电脑上的文件系统中找到下载的文件,并在需要的时候进行使用或处理。 通过以上步骤,您就可以顺利下载target-qte-4.8.5-to-hostpc,并从目标平台上下载所需的文件到主机电脑上使用了。 ### 回答2: "target-qte-4.8.5-to-hostpc"是指将QTE(一个嵌入式操作系统)4.8.5版本从目标设备下载到主机电脑。这个过程涉及将嵌入式操作系统的文件从目标设备传输到主机电脑。 首先,需要确保目标设备和主机电脑之间建立了连接,可以使用串口、以太网或无线连接等方式进行通信。 接下来,需要在主机电脑上安装与目标设备相匹配的下载工具。根据目标设备的不同,可能使用不同的下载工具,例如OpenOCD、QTCreator等。请根据实际情况选择适当的下载工具,并安装在主机电脑上。 然后,打开下载工具并与目标设备建立连接。根据下载工具的不同,可能需要配置相应的连接参数,例如串口号、波特率、目标设备的IP地址等。 连接成功后,在下载工具中选择要下载的QTE版本(4.8.5),并设置下载的目标路径。通常,下载的目标路径是指主机电脑上的一个文件夹,在这个文件夹中将存放从目标设备下载的QTE文件。 最后,点击下载按钮开始将QTE 4.8.5版本从目标设备下载到主机电脑。下载的过程可能需要一些时间,具体时间取决于目标设备和下载工具的性能以及传输的文件大小等因素。 下载完成后,在主机电脑上的目标路径中可以找到下载的QTE 4.8.5版本文件。这样,你就成功将目标设备上的QTE 4.8.5版本下载到了主机电脑上。 需要注意的是,上述过程仅作为一般指导,具体步骤可能因目标设备和下载工具的不同而有所差异。在实际操作中,请参考相关文档或咨询专业人士以确保正确完成下载操作。 ### 回答3: target-qte-4.8.5-to-hostpc是一种用于将目标设备上的Qte环境下载到主机电脑上的工具。在目标设备上运行Qte环境可以为主机电脑提供一些额外的功能和服务。 要下载target-qte-4.8.5-to-hostpc,首先需要确保目标设备和主机电脑之间已建立网络连接并正常通信。然后,可以按照以下步骤进行操作: 1. 在主机电脑上打开浏览器,进入下载target-qte-4.8.5-to-hostpc的官方网站或相关软件下载页面。 2. 在网站或下载页面中,找到适用于主机电脑的版本和操作系统的下载链接,通常会提供多种版本的下载选择。 3. 点击下载链接后,会开始下载target-qte-4.8.5-to-hostpc的安装程序或压缩包。请根据你的操作系统,选择适合的下载版本。 4. 下载完成后,打开下载文件。如果是压缩包,则需要解压缩到指定文件夹中。 5. 运行安装程序,并按照提示完成target-qte-4.8.5-to-hostpc的安装过程。在安装过程中,可以选择安装目录、创建桌面快捷方式等选项。 6. 安装完成后,根据软件的操作指南,配置主机电脑和目标设备之间的连接参数。这些参数可能包括目标设备的IP地址、端口号等信息。 7. 配置完成后,就可以使用target-qte-4.8.5-to-hostpc连接目标设备,并下载Qte环境到主机电脑上了。 总之,通过下载target-qte-4.8.5-to-hostpc工具,可以方便地将目标设备上的Qte环境下载到主机电脑上,以提供更多功能和服务。但需要注意,在下载和安装过程中,要确保选择正确的版本,并按照操作指南进行正确设置和配置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值