您的位置:首页 > 编程语言 > Qt开发

Ubuntu下Qt嵌入式开发平台的搭建

2016-03-04 23:12 531 查看

一.qt的版本介绍

按照不同的图形界面来划分,分为四个版本:

Win32版:适用于windows平台;

X11版:适用于各种X系统的Linux和Unix平台;

Mac版:适用于苹果的MacOS;

Embedded版:适用于具有帧缓冲(Frame buffer)的linux平台;

Qtopia是基于qt开发的一个软件平台,Qtopia是构建于Qt/E之上的一系列应用程序,在这个平台上我们可以开发各种应用程序。2008年,TrollTech公司被Nokia收购后,Qtopia被重新命名为Qt Extended。 Nokia在推出了Qt Extended的最新版Qt Extended 4.4.3之后的2009年3月3日,决定停止Qt Extended的后续开发,转而全心投入Qt的产品开发,并逐步会将一部分Qt Extended 的功能移植到Qt的开发框架中。

所以总的来说,QT也就三种:面向桌面的X11、面向嵌入式的Qt/E、以及面向嵌入式带各种应用程序的Qtopia桌面系统。

X11版(默认版本)

X11版本的QT可以在使用X windows系统的linux 桌面操作系统上运行(我用的是Ubuntu),如果不需要开发桌面应用程序,可以不编译。

2、Embeded x86版

这个版本为什么是嵌入版(Embeded)的,因为x86台式机本身也可以当做一个嵌入式系统,但是Embeded x86版的QT不能直接通过X11窗口系统输出画面,这时我们可以借助X11的qvfb工具仿真一个LCD输出设备(QWS环境),这样Embeded x86应用程序就能在Ubuntu里仿真运行了。要理解这点其实很简单,以Ubuntu为例,Ubuntu的应用程序是以X11协议(X窗口系统)输送到 屏幕显示界面的,X server负责图形显示,应用程序负责计算、修改数据,两者基于某种协议通信。对于嵌入式linux,qt应用程序也需要一个窗口系统才能显示,但是嵌 入式linux系统不能使用X11(太耗资源了),奇趣公司就专门开发了一个qws(QT windows system), 应用程序按照协议向qws发送数据,服务端负责显示数据。现在,qvfb就是QWS的显示设备。

另外请注意,Embeded x86版的QT应用程序是不能在arm开发板上运行的。

embeded x86版并不是我们的开发板最终使用的QT库,编译这个版本只是为了方便我们调试, 先在ubuntu中仿真运行,看看界面,不必下载到开发板的文件系统中运行,两者的运行效果除了界面基本相同,其他方面还是有差异的。

3、Embeded arm版

这个版本才是我们在arm开发板上运行的版本。

我们做嵌入式开发,其实只需编译第3版本的QT(Embeded arm版),编译X11 版本的目的只是方便我个人学习QT,编译Embeded x86只是为了体验仿真效果。

下载网址:http://qt-project.org/downloads

如果想下载Qt的以前版本,可以在上面网址的最下面的一栏有个Archive for old versions ,进去就可以下载qt的以前版本了。

二.嵌入式Qt开发环境的搭建

1.预备知识

嵌入式qt开发环境的安装方法很多,qt的版本也很多。有点让人不知所措,不知该按哪种方法去安装。刚开始总不知其几个版本之间的关系。现在也只知道其大概的一个关系,下面理清一下:据我所知的qt版本有:

t-x11-opensource-src-4.3.2.tar.gz

qt-embedded-linux-opensource-src-4.4.0-rc1.tar.bz2

qt-everywhere-opensource-src-4.8. 5.tar.gz

QtSdk-offline-linux-x86-v1.2.1.run

qt-creator-linux-x86-opensource-2.5.0.bin

首先网上有人说安装 1和2,就可以了,因为1可以提供Qt designer 和qvbf,然后2可以提供嵌入式编译库,两者安装后就可以搭建一个嵌入式qt开发环境了,其实没错,不过已经过时了,因为现在有了Qt creator。Qt creator 就包含了 Qt designer和qvbf,因此我们仅仅安装5的版本就可以替代1的安装。不过2也还是要安装,不过了,像2那种版本的编译库现在已经有了更加齐全的库替代,那就是3了。而4就是5的升级版了,它不仅可以包含5拥有的所有东西,而且能开发嵌入式应用程序。

构建Qt/Embeded的交叉编译环境需要3个Qt开发环境:

Qt/Embeded(x86)环境:在宿主机平台模拟编译和调试目标机程序的环境,带有qvfb功能,在PC机上可以模拟应用程序在arm开发板上的运行情况。用此编译好的程序,无法直接运行,必须加上参数 -qvfb -qws。

Qt/Embeded(ARM)交叉编译环境:编译好的程序,用于在arm平台上运行。

首先要准备好交叉编译所需要的软件包:

arm-linux-gcc-4.4.3-20100728.tar.gz(交叉编译环境)

qt-everywhere-opensource-src-4.8.5.tar.gz(Qt的源码)

qt-creator-linux-x86_64-opensource-2.5.2.bin(我的系统是64位,所以选择x86_64)

tslib-1.4.tar.gz(触摸屏校验工具)

其中(2)和(3)在http://download.qt-project.org/archive/ 进行下载。

2.环境的搭建

2.1系统环境

主机操作系统:ubuntu10.04

主机编译器:gcc4.4.3,

交叉编译器:arm-linux-gcc-4.3.3

2.2安装交叉编译器

将 arm-linux-gcc解压,例如/opt/toolschain/4.4.3/目录

配置下编译环境路径 在控制台下输入 gedit /root/.bashrc 等一会出来文本编辑器后在文件最后(最后一行)加上下面代码

export PATH=/opt/toolschain/4.4.3/bin:$PATH


重新打开一个终端,使上面的配置文件生效;输入命令 arm-linux-gcc -v; 如果出现下面界面,就代表交叉编译器安装成功,会输出gcc的版本号;

2.3 安装触摸屏校验工具

把tslib-1.4.tar.gz放到一个目录下,比如/opt目录下。接着执行命令如下:

#tar zxvf tslib-1.4.tar.gz


执行命令cd tslib,进入tslib当前目录,接着执行命令如下:

#./autogen.sh


然后接着执行配置命令:

#./configure     --prefix=/usr/local/tslib --host=arm-linux ac_cv_func_malloc_0_nonnull=yes


最后执行编译命令和安装命令:

make
make install


如果以上步骤没错,则可以在/usr/local/tslib下出现我们需要的库文件,这些库文件我们移植时会用到。

编译期间出现的错误:./autogen.sh: 4: autoreconf: not found

解决办法:sudo apt-get install autoconf automake libtool

2.4 安装QtCreator

以Ubuntu系统为例,此IDE已加入软件仓库,使用

apt-get install qtcreator


命令即可自动安装。

2.5 编译Qt库源码

2.5.1 解压

将源码qt-everywhere-opensource-src-4.8.5.tar.gz 进行解压,并复制三份到/usr/local目录下,并分别命名为qt-pc,qt-x86,qt-arm。

2.5.2 编译PC版

进入qt-pc目录,执行如下操作:

#./configure
# make
# make install


编译过程中出现的问题:

出错:Basic XLibfunctionality test failed!

这个错误主要是因为,XLib库没有安装,所以在编译X11平台时,应该保证,以下命令正确执行:sudo apt-get install libx11-dev libxext-dev libxtst-dev

注意:可以使用 make confclean 命令 把以前的配置信息清除掉,然后再重新配置。

2.5.3 编译x86版

进入qt-x86目录,执行如下操作:

# ./configure  -embedded x86    -qt-gfx-qvfb    -qt-kbd-qvfb   -qt-mouse-qvfb
# make
# make install


安装过程比较长,没有碰到过错误。

编译安装PC版中的 qvfb:

进入qt-pc/tools/qvfb/目录,执行如下操作:

#make


编译完毕,将qt-pc/bin目录下的qvfb文件复制到/usr/local/Trolltech/QtEmbedded-4.8.5/bin目录。

编译qvfb时,出现了如下错误:

x11keyfaker.cpp:48:34: 致命错误: X11/extensions/XTest.h:没有那个文件或目录

编译中断。make: * [.obj/release-shared/x11keyfaker.o] 错误 1

解决方法:

sudo apt-get install xorg-dev

如果makefile中没有-lXtst选项,则修改makefile 中 LIBS 选项: 添加 -lXtst选项

2.5.4 编译ARM版

必须加上“-prefix /usr/local/Trolltech/QtEmbedded-4.8.5-arm ”参数, 不然安装后不在QtEmbedded-4.8.5-arm文件夹下,而是覆盖了QtEmbedded-4.8.5。

# ./configure \
-prefix  /usr/local/Trolltech/QtEmbedded-4.6.3-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
-qt-mouse-tslib  -I/usr/local/tslib/include  -L/usr/local/tslib/lib


如果放弃配置,则使用命令:# make confclean

编译:# make

安装:# make install

安装完成后,在/usr/local/Trolltech目录中有三个文件夹:Qt-4.8.5、QtEmbedded-4.8.5、QtEmbedded-4.8.5-arm。

2.6 安装完后

2.6.1 qvfb的测试

运行qvfb,提示了如下错误,在网上也查了很多种解决办法,最后还是没有解决; 有的说要重新编译内核,并带上参数;觉得比较麻烦,就没有去尝试;不过这个错误并不影响我们仿真模拟Qt4程序。

2.6.2 QtCreator编译前的配置

做嵌入式软件开发时常常使用x86版Qt编译器,因为其编译后的程序在qvfb中的运行效果与ARM设备上基本一致。

打开QtCreator ,工具—->选项—>构建和运行 进行设置,在Qt版本菜单下,手动设置选择qmake路径。

打开QtCreator 对其进行设置,点击左边的项目,选择运行,对其进行设置,在参数里添加 -qws参数

编译与运行

现在终端 输入命令:

qvfb -width 800 -height 480 &


打开虚拟缓冲端;

然后就可以在QtCreator对程序进行编译、运行了;

http://blog.csdn.net/lpp0900320123/article/details/24876159
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  qt 嵌入式开发