专栏首页秘籍酷Qt(交叉编译并移植到ARM平台)

Qt(交叉编译并移植到ARM平台)

有时,我们需要在嵌入式系统中实现GUI,来满足特定嵌入式场景的人机交互需求,比如汽车影音系统、智能医疗终端、可视化无人机遥控等。Qt是一套C++扩展库,为嵌入式和图形显示都做出了很多优秀的改进和提升。这一篇来看看把Qt搞到ARM平台开发板中的步骤和注意事项,以备不时之需。

废话少说,第一步,自行百度(推荐google,但要先翻墙)下载Qt源码到Ubuntu中:(或者找林老师直接索取,QQ2437231462)

qt-everywhere-opensource-src-5.5.0.tar.gz

第二步,在编译主机Ubuntu中下载expat和dbus源码,交叉编译它们。expat是一款比较好用的XML解析器实现,dbus为Qt提供了进程间交互的功能基础。它们的样子长这个样:

expat-2.1.0.tar.gz dbus-1.8.0.tar.gz

同样,自行百度或google下载到Ubuntu中(或者找林老师直接索取,QQ2437231462)。要注意的一点是,要先安装expat,然后在装dbus,然后再到Qt。

第三步,安装编译环境必要组件,一条命令搞定:

sudo apt-get install build-essential

第四步,解压expat,并在其源代码顶层目录下编写一个配置脚本x.sh如下:

#!/bin/bash

export INSTALLDIR=/usr/local/arm/expat-2.1

sudo mkdir -p $INSTALLDIR

sudo chmod 777 $INSTALLDIR -R

./configure \

--prefix=$INSTALLDIR \

--host=arm-none-linux-gnueabi

修改x.sh的权限,配置、编译并安装三部曲:

chmod 777 x.sh; ./x.sh make make install

第五步,解压dbus,并在其源代码顶层目录下也编写一个配置脚本x.sh如下:

#!/bin/bash

export INSTALLDIR=/usr/local/arm/dbus-1.8

export PATH=$INSTALLDIR/bin:$PATH

export TARGETMACH=arm-none-linux-gnueabi

export BUILDMACH=i686-pc-linux-gnu

export CROSS=arm-none-linux-gnueabi

export CC=${CROSS}-gcc

export LD=${CROSS}-ld

export AS=${CROSS}-as

export CXX=${CROSS}-g++

sudo mkdir -p $INSTALLDIR

sudo chmod 777 $INSTALLDIR -R

./configure \

--prefix=$INSTALLDIR \

--host=$TARGETMACH \

--enable-abstract-sockets \

--enable-tests=no \

CFLAGS=-I/usr/local/arm/expat-2.1/include \

LDFLAGS=-L/usr/local/arm/expat-2.1/lib

跟expat一样,修改x.sh的权限,配置、编译并安装三部曲:

chmod 777 x.sh; ./x.sh make make install

最后进入qt源码顶层目录,为了方便维护,同样也编写一个x.sh,内容如下:

#!/bin/bash

export INSTALLDIR=/usr/local/arm/qt-5.5

sudo mkdir -p $INSTALLDIR

sudo chmod 777 $INSTALLDIR

./configure -v \ --prefix=$INSTALLDIR \ -release \ -make libs \ -xplatform linux-arm-gnueabi-g++ \ -optimized-qmake \ -pch \ -qt-sql-sqlite \ -qt-libjpeg \ -qt-zlib \ -qt-freetype \ -no-sse2 \ -no-opengl \ -no-openssl \ -no-nis \ -no-cups \ -no-glib \ -no-iconv \ -no-xcursor \ -no-xfixes \ -no-xrandr \ -no-xrender \ -no-separate-debug-info \ -nomake tools \ -nomake examples \ -dbus \ -I /usr/local/arm/dbus-1.8/include \ -L /usr/local/arm/dbus-1.8/lib

以上配置脚本如果你不想自己写,可以找林老师直接索取,QQ2437231462。但我会鄙视你,因为你最好自己写一遍,才能记得住才能去体会里面的命令的意思,不然都是浑沦吞枣。接下来,你就可以编译qt了:

chmod 777 x.sh; ./x.sh make -j 4 make install

有几个重点提前剧透一下,make的编译时间视乎你的电脑性能而定,首次编译大概需要40-60分钟,后续编译就三两分钟。但是如果你把顶层Makefile删除,那么编译时间将会跟首次一样。

将上述编译好的文件(即/usr/local/arm/下的相关文件,尤其是库文件)放到开发板中,即可将交叉编译好的Qt程序放到开发板运行了。

本文分享自微信公众号 - 秘籍酷(mijiku040)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-05-08

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • python pyqt5 卡通人物形状窗体

    import sys from PyQt5.QtWidgets import QApplication, QWidget from PyQt5.QtGui ...

    用户5760343
  • python pyqt5 带分页表格

    import sys import re from PyQt5.QtWidgets import (QWidget, QHBoxLayout, QVBoxL...

    用户5760343
  • python pyqt5 按钮和label添加背景图片

    from PyQt5.QtWidgets import QApplication, QLabel, QWidget, QVBoxLayout, QPushBut...

    用户5760343
  • Android混淆你了解多少?

    在 Android 日常开发过程中,混淆是我们开发 App 的一项必不可少的技能。只要是我们亲身经历过 App 打包上线的过程,或多或少都需要了解一些代码混淆的...

    CCCruch
  • 【Python进阶】Python进阶专栏、编程与开源框架知识星球上线,等你来follow

    大家好,今天我将在有三AI开设新专栏《Python进阶》。在这个专栏中,我们会讲述Python的各种进阶操作,包括Python对文件、数据的处理,Python各...

    用户1508658
  • python pyqt5 操作sqlite

    import sys from PyQt5.QtCore import * from PyQt5.QtGui import * from PyQt5.Qt...

    用户5760343
  • python pyqt5 pandas处理数据

    """ Module implementing MainWindow. """

    用户5760343
  • python pyqt5 获得城市天气

    from PyQt5 import QtCore, QtGui, QtWidgets

    用户5760343
  • python pyqt5 加载QSS

    """ import sys from PyQt5.QtWidgets import QMainWindow, QApplication, QVBoxLay...

    用户5760343
  • python pyqt5 matplotlib绘图

    import sys import random import matplotlib

    用户5760343

扫码关注云+社区

领取腾讯云代金券