1  开发环境

  • 目标版:FS4412(Cortex-A9)开发板
  • 交叉工具链:arm-linux-gcc 4.6.4 版本
  • Qt:qt-everywhere-opensource-src-5.4.2.tar.xz
  • Linux:Ubuntu 16.04

2  QT源码配置、编译及安装

这里以 QT5.4.2 版本为例,在 Qt 官网下载 qt-everywhere-opensource-src-5.4.2.tar.xz 文件。

(1)解压:

# .tar.xz

(2)备份 qmake 配置文件:

# cp -a qtbase/mkspecs/linux-arm-gnueabi-g++/ qtbase/mkspecs/linux-arm-g++/

(3)修改 qmake 配置文件,指定交叉工具链:

# vim qtbase/mkspecs/linux-arm-g++/qmake.conf

将配置文件中所有的 arm-linux-gnueabi 都替换为 arm-linux。

(4)编辑一个自动配置的脚本文件(如 config.sh)存放在源码顶层目录下,并添加可执行权限。内容如下:

#!/bin/bash
./configure -release -opensource -confirm-license -qt-sql-sqlite -no-sse2 -no-sse3 -no-ssse3 -no-sse4. -no-sse4. -no-avx -no-avx2 -no-mips_dsp -no-mips_dspr2 -no-pkg-config -qt-zlib -qt-libpng -qt-libjpeg -qt-freetype -no-openssl -qt-pcre -qt-xkbcommon -no-glib -nomake examples -nomake tools -nomake tests -no-cups -no-iconv -no-dbus -xplatform linux-arm-g++ -no-use-gold-linker -qreal float
exit 

(5)执行配置:

# ./config.sh

配置成功后,会在最后打印如下信息:

Qt is now configured for building. Just run 'make'.
Once everything is built, you must run 'make install'.
Qt will be installed into /usr/local/Qt-5.4.2
Prior to reconfiguration, make sure you remove any leftovers from
the previous build.

(6)编译以及安装:

# make
# make install

因为没有在配置中指定安装路径,所以使用的是默认的安装路径,即 /usr/local/Qt-5.4.2/。

3  在根文件系统中添加 Qt

(1)进入根文件系统目录,把安装好的Qt目录下的所有内容拷贝到根文件系统中:

# cd /home/rootfs/rootfs-fs4412
# mkdir usr/local
# / usr/local/

(2)然后编辑 etc 目录下的 profile 文件:

# Qt环境
export QTDIR=/usr/local/Qt-5.4.2
# 指定字体的路径
export QT_QPA_FONTDIR=$QTDIR/lib/fonts
# 指定插件的路径
export QT_QPA_PLATFORM_PLUGIN_PATH=$QTDIR/plugins
# 指定QT运行的平台,linuxfb指定帧缓存设备,size指定设备的分辨率,tty指定非GUI程序使用的tty
export QT_QPA_PLATFORM=linuxfb:fb=/dev/fb0:size=1024x600:tty=/dev/ttySAC2
export PATH=$QTDIR/bin:$PATH
# 指定Qt库路径
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH$QTDIR:$QTDIR/lib

4  安装 Qt 集成开发环境 

Qt 的集成开发环境以 qt-opensource-linux-x64-5.4.2.run 为例。

(1)运行安装包:

# ./qt-opensource-linux-x64-.run

(2)指定安装路径:

(3)一路采取默认,至此,安装完成:

【温馨提示】在编译 Qt 代码时可能出现“error: GL/gl.h: No such file or directory”错误,需要使用下面命令安装库:

# apt-get install libqt4-dev

 5  添加 ARM 平台的构建环境

Qt集成开发环境安装后,默认只有PC机上的构建环境,需要手动添加 ARM 平台上的构建环境。

(1)指定 Qt 版本,选择“工具”->“选项”(增加qmake)

(2)指定编译器:

(3)增加构建套件:

设置完成后,点击“0K”,完成配置工作。

6  编写并运行 Qt 程序

(1)新建项目,“文件”->“新建文件或项目…”:

(2)编辑UI文件:

添加一个 Line Edit 和一个 Push Button,并将 Push Button 的显示的名称改为 Clear,将窗口的大小改为 1024x600,这样窗口可以布满整个显示屏。接下来为按钮添加槽函数,右击按钮,然后在弹出的菜单中选择 go to slot 子菜单即可。

在自动生成的槽函数中,添加如下的代码:

void MainWindow::on_pushButton_clicked() {
    ui->lineEdit->clear();
}

(3)代码编写完成后进行保存,然后先选择 PC 上的构建套件进行编译测试,点击下图中的三角形按钮即可运行。

测试成功后,在切换构建套件成 ARM,执行“构建”->“构建所有项目”。

(4)编译成功后,会在相应的目录生成可在开发板运行的可执行程序,拷贝到开发板即可运行。

# cp ./test /home/rootfs/rootfs-fs4412

将开发板接上 USB 的鼠标和键盘,然后上电,使用 NFS 挂载根文件系统,使用下面命令运行 Qt 程序:

# ./test  -plugin evdevmouse:/dev/input/event1 -plugin evdevkeyboard:/dev/input/event2

开发板上运行的程序功能将会和刚才在PC机上运行的程序功能一样。在命令行中通过 evdevmouse 指定了鼠标设备,通过 evdevkeyboard 指定了键盘设备。这些设备的路径需要根据系统的实际情况而定。

嵌入式QT移植的更多相关文章

  1. 移植QT5.6到嵌入式开发板(史上最详细的QT移植教程)

    目前网上的大多数 QT 移植教程还都停留在 qt4.8 版本,或者还有更老的 Qtopia ,但是目前 Qt 已经发展到最新的 5.7 版本了,我个人也已经使用了很长一段时间的 qt5.6 for w ...

  2. 基于mini2440的Qt移植

    花了很长时间,终于把Qt移植到mini2440开发板上了,不能说完全成功,总算是完成一大步,各中过程心酸,废话不多说,下面正式讲解移植过程. 移植环境: win7系统,虚拟机是ubuntu12.04 ...

  3. 嵌入式Qt开发环境的搭建详解

    一.嵌入式Qt开发环境的搭建前奏 1.下载arm-linux-gcc-4.4.3-20100728.tar.gz 2.下载qt-everywhere-opensource-src-4.8.5.tar. ...

  4. 基于arm的嵌入式QT开发(课程设计)

    一. 项目要求 配置QT5.7基于x86及arm 等两种CPU架构的调试及开发环境: 移植arm编译后的QT5.7及屏幕校准工具tslib1.4至CORTEX ARM9实验平台: 开发基于QT5.7的 ...

  5. 【Linux开发】【Qt开发】嵌入式Qt程序使用触屏或USB鼠标方式

    上文<嵌入式Qt开发-移植到ARM开发板 >介绍了Qt程序的移植,本文再说下如何使开发板Qt程序使用触摸屏或USB方式进行交互. 之前刚把一个qt程序移植到arm板上成功运行显示时就开心的 ...

  6. 【Linux开发】【Qt开发】ARM QT移植详细步骤教程

    ARM QT移植详细步骤教程 米尔SAM9X5和A5D3X上默认的Qt版本是4.5.3,当这个版本的Qt库不能满足实际开发需求时,可通过此方法制定Qt开发.运行环境. 移植的步骤如下: 1.下载新版q ...

  7. iMX287A嵌入式Qt环境搭建

    目录 1.嵌入式Qt简介 2.查看开发板Qt库的版本 3.第一个嵌入式Qt程序--Hello World 4.Linux桌面版本Qt环境的搭建 5.注意 @ 1.嵌入式Qt简介 Qt 是一个跨平台的应 ...

  8. QT移植无法启动 This application failed to start because it could not find or load the QT platform

    QT配置好在自己机器上可以运行,但在别人机器上一直弹出 "This application failed to start because it could not find or load ...

  9. MISP版本嵌入式QT编译时出现mips-linux-gcc command not found

    configure的时候都没什么问题我的configure是:./configure -prefix /opt/qt-jz -xplatform qws/linux-mips-g++ -embedde ...

随机推荐

  1. ECMAScript 6新特性简记

    ECMAScript 6.0是JavaScript语言的2015年6月的发布版. 一.let和const命令 let:用来声明变量,用法类似于var,但是只在let命令所在的代码块内有效. var a ...

  2. [Spark内核] 第28课:Spark天堂之门解密

    本課主題 什么是 Spark 的天堂之门 Spark 天堂之门到底在那里 Spark 天堂之门源码鉴赏 引言 我说的 Spark 天堂之门就是SparkContext,这篇文章会从 SparkCont ...

  3. 音频PCM编码

    PCM编码 PCM就是把一个时间连续,取值连续的模拟信号变换成时间离散,取值离散的数字信号后在信道中传输.简而言之PCM就是对模拟信号先抽样,再对样值幅度量化,编码的过程.例如听到的声音就是模拟信号, ...

  4. 【AC自动机】Lougu P3796

    题目描述 有NNN个由小写字母组成的模式串以及一个文本串TTT.每个模式串可能会在文本串中出现多次.你需要找出哪些模式串在文本串TTT中出现的次数最多. 输入输出格式 输入格式: 输入含多组数据. 每 ...

  5. 使用Python实现贪心算法

    题目: 圣诞节来临了,在城市A中,圣诞老人准备分发糖果.现在有多箱不同的糖果,每一种糖果都有自己的价值和重量.每箱糖果都可以拆分成任意散装组合带走.圣诞老人的驯鹿最多只能承受一定重量的糖果.请问圣诞老 ...

  6. 前端包管理工具 yarn

    yarn 是一个  与 npm 类似的 前端包管理工具 安装 windows  要去官网下载 (一定要去官网下载 .mis 文件进行安装)   用npm 或者 cnpm  也能安装 但是这种安装 有缺 ...

  7. PHP错误与异常

    请一定要注意,没有特殊说明:本例 PHP Version < 7 说起PHP异常处理,大家首先会想到try-catch,那好,我们先看一段程序吧:有一个test.php文件,有一段简单的PHP程 ...

  8. 希尔排序(Go语言)

    func ShellSort(num []int) { //increment相隔数量 ;increment> ;increment/= { //i序号较大的数组下标,i ,j进行比较 for ...

  9. 【转】qlv文件如何转换成mp4 怎样把下载好的qlv格式视频转换成MP4格式

    狸窝  复制  收藏  保存到桌面  快速找教程方案  反馈需求  社会主义核心价值观  客服QQ41442901   马上注册 升级VIP   对于视频文件之间的转换问题,我也已经是无力吐槽了,每个 ...

  10. CTF---安全杂项入门第二题 A记录

    A记录分值:20 来源: sammie 难度:中 参与人数:2255人 Get Flag:566人 答题人数:621人 解题通过率:91% 他在看什么视频,好像很好看,不知道是什么网站的. 还好我截取 ...