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

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信息


  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
在 Ubuntu 20.04 LTS 上交叉编译 Qt 4.8.6 并将其部署到目标平台 Linux/imx6ull 上,您需要执行以下步骤: 1. 安装交叉编译工具链 您需要安装适用于 imx6ull 平台的交叉编译工具链。您可以从您的硬件供应商或开发板制造商处获得该工具链。安装工具链后,请确保将其添加到系统 PATH 环境变量中。 2. 下载 Qt 4.8.6 源代码 您可以从 Qt 官方网站下载 Qt 4.8.6 的源代码。请注意,这是一个相对古老的版本,因此您可能需要进行一些修改才能使其与最新版本的 Ubuntu 兼容。 3. 配置交叉编译环境 在终端中,切换到 Qt 4.8.6 源代码目录并执行以下命令: ``` ./configure -embedded arm -xplatform linux-arm-gnueabi-g++ -no-gcc-sysroot -no-cups -no-largefile -no-accessibility -no-sql-sqlite -no-qt3support -no-opengl -no-openvg -no-xsync -no-xcursor -no-xinerama -no-xinput -no-xkb -no-xrandr -no-xrender -no-xshape -no-xkbcommon -no-xxf86vm -no-sm -no-xvideo -no-xlib -no-nas-soundserver -no-glib -no-dbus -no-separate-debug-info -no-webkit -no-script -no-scripttools -nomake demos -nomake examples -prefix /usr/local/qt4.8.6-arm ``` 此命令将配置 Qt 4.8.6 的交叉编译环境,以生成适用于 imx6ull 平台的二进制文件。请注意,此命令中的选项可能需要根据您的具体情况进行修改。 4. 编译 Qt 4.8.6 在终端中,执行以下命令以开始编译 Qt 4.8.6: ``` make ``` 请注意,此命令可能需要一些时间才能完成。 5. 安装 Qt 4.8.6 在终端中,执行以下命令以安装 Qt 4.8.6: ``` sudo make install ``` 此命令将 Qt 4.8.6 安装到 /usr/local/qt4.8.6-arm 目录中。 6. 部署 Qt 4.8.6 到 imx6ull 平台 将 /usr/local/qt4.8.6-arm 目录复制到 imx6ull 平台的文件系统中。然后,在 imx6ull 平台上设置 QTDIR 环境变量以指向该目录。 7. 测试 Qt 4.8.6 在 imx6ull 平台上,打开终端并执行以下命令以测试 Qt 4.8.6: ``` qmake -v ``` 此命令应该输出 Qt 4.8.6 的版本信息。 现在,您已经成功地将 Qt 4.8.6 交叉编译并部署到了 imx6ull 平台。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值