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

Qt 4.8.6 X11、embeded x86(qvfb运行 )、embeded arm各个版本编译总结

2016-04-28 09:48 811 查看
QT是跨平台C++图形用户界面应用程序开发框架,可以实现一套源码,多个平台编译运行。可视为平台无关的开发环境。

QT源码可以被编译成很多个版本,这里介绍3个版本:linux桌面版(X11),embeded x86版,embeded arm版。编译后生成对应平台库文件,使用某平台的编译器编译应用程序时就会链接对应平台的库文件,这样应用程序就能在该平台下运行。

1、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只是为了体验仿真效果。

一、编译X11版:

1、需要libx11-dev libxext-dev libxtst-dev这3个库。

sudo apt-get install libx11-dev libxext-dev libxtst-dev

opengl需要

$ sudo apt-get install xlibmesa-gl-dev libglu1-mesa-dev

phonon需要

sudo apt-get install libglib2.0-dev

sudo apt-get install libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev

sudo apt-get install libphonon-dev libphonon4 phonon-backend-gstreamer

sudo apt-get install xorg-dev

2、配置configure参数

建立一个qt-4.8.6-x11目录,最好在用户空间内,这样可以避免出现权限问题。

下载并解压qt4.8.6源码,更改源码目录名为:

qt-src-4.8.6-x11

进入源码目录执行:

./configure -opensource -prefix /home/tom/work/qt/qt-4.8.6-x11 -glib -phonon -no-webkit -no-javascript-jit -no-openssl -no-cups

这里我不需要webkit和JavaScript、openssl、cups,所以除能这些库。

3、执行make && make install

(耗时2小时左右)

二、编译Embeded x86版:

1、配置configure参数

建立一个qt-4.8.6-qvfb目录,最好在用户空间内,可以避免出现权限问题。

再解压一个qt4.8.6源码(解压比复制快),更改源码目录名为:

qt-src-4.8.6-qvfb

进入源码目录,执行:

./configure -opensource -confirm-license -prefix /home/tom/work/qt/qt-4.8.6-qvfb -embedded x86 -qvfb -glib -no-webkit -no-javascript-jit -no-openssl

注意这里加了x86

2、执行make && make install

(耗时2小时左右)

3、测试qvfb

进入qt-4.8.6-qvfb/example/widget/calcular目录,测试计算器程序。

首先要打开qvfb,在终端输入qvfb -width 800 -height 400 &

执行./calcular -qws,程序正常运行。效果如下:



三、编译ARM版QT

1、配置configure参数

建立一个qt-4.8.6-arm目录,最好在用户空间内,可以避免出现权限问题。

再解压一个qt4.8.6源码,更改源码目录名为:

qt-src-4.8.6-arm

在qt-src-4.8.6-arm/mkspec/qws/linux-arm-g++/qmake.conf文件中定义了交叉编译器,默认使用arm-linux-gcc,armlinux-g++,我用的是arm-linux-gnueabi,所以分别改成arm-linux-gnueabi-gcc和arm-linux-gnueabi-g++。

进入源码目录,执行:

./configure -opensource -confirm-license -prefix /home/tom/work/qt/qt-4.8.6-arm -embedded arm -xplatform qws/linux-arm-g++ -platform /qws/linux-x86-g++
-little-endian -host-little-endian -shared -no-qt3support -no-phonon -no-phonon-backend -qt-zlib -no-gif -no-libtiff -no-qvfb -qt-libjpeg -no-nis -no-opengl -no-cups -no-webkit -no-glib -no-dbus -no-rpath -no-mmx -no-3dnow -no-sse -no-sse2 -no-sse3 -no-ssse3
-no-sse4.1 -no-sse4.2 -no-avx -no-neon -no-audio-backend -no-svg -no-javascript-jit -no-script -no-scripttools -no-multimedia -no-openssl -nomake tools -nomake examples -nomake demos -nomake docs -nomake translations
-lrt

arm版的QT库很多组件都不需要,所以编译时间也相对短一些。另外,这里我们添加了

-xplatform qws/linux-arm-g++ -platform /qws/linux-x86-g++

这2个选项,-xplatform表示配置交叉编译器,-platform表示配置当前平台的编译器(对于我的ubuntu就是linux-x86-g++),编译器名称可以在源码目录内mkspec内查询,文件夹名称就是对应的编译器。qws/linux-arm-g++ 代表我们的arm开发板是使用qws运行qt程序的,但是注意,qws/linux-arm-g++/qmake.conf里配置了对应的编译器名称,如果和你之前安装好的交叉编译器路径名称不一样,那就需要修改。我的交叉编译器是使用sudo
apt-get install gcc-arm-linux-gnueabi安装的,将qmake.conf里的编译器改成arm-linux-gnueabi就可以编译了。

最后的 -lrt 是加入librt链接库(在arm-linux-gnueabi/lib目录下)。没有这个库,编译的时候会提示undefined reference to `clock_gettime错误。

2、执行make && make install

参考资料:
http://wenku.baidu.com/link?url=uAW2u9y82wIfAl6HSfyWHbkQxjsYSEqogOhhBMLZtY-CLJvSOCiQvPvZmch9feULU_KXou57ArHbnBBz2Pb_YtZNxv7kIIgnAQ1ii5VRzXu http://qt-project.org/doc/qt-4.8/configure-options.html http://qt-project.org/doc/qt-4.8/install-x11.html http://qt-project.org/doc/qt-4.8/qt-embedded-install.html http://qt-project.org/doc/qt-4.8/qt-embedded-crosscompiling.html http://qt-project.org/doc/qt-4.8/developing-with-qt.html http://qt-project.org/doc/qt-4.8/qvfb.html
qt 4.8.6的configure help信息

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: