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. git和github新手安装使用教程(三步入门)

    git和github新手安装使用教程(三步入门) 对于新手来说,每次更换设备时,github的安装和配置都会耗费大量时间.主要原因是每次安装时都只关心了[怎么做],而忘记了记住[为什么].本文从操作的 ...

  2. 教你用.Net来玩微信跳一跳

    目前开发的所有代码都已经上传到了GitHub.欢迎大家来Star https://github.com/GiantLiu/AutoJump 目前程序分为“全自动版本”和“半自动版本” 全自动版本 We ...

  3. ppt的那些小事(一)

    根据应用场景不同,幻灯片可以分为两大类,演讲型和阅读型 模板资源:(免费) OfficePLUS,微软Office官方在线模板网站!http://www.officeplus.cn/Template/ ...

  4. sso示例代码

    个人写的一个关于在ASP.NET 中如何实现SSO单点登录,这可能也是.NET实现大型互联网项目的第一步要解决的问题.已经放到GitHub上供大家参考.https://github.com/bidia ...

  5. ABP Zero示例项目问题总结

    1.ABP Zero项目,登录时出现如图“Empty or invalid anti forgery header token.”错误提示 ABP Zero项目,登录时出现如图“Empty or in ...

  6. java中的重载与重写

    重载简述 在java语言中,同一个类中的两个或者两个以上的方法可以有同一个名字,只要他们的的参数声明不同即可,该方法被称为重载,这个过程称为方法的重载,它是实现java多态性的一种方式. 重载是友好的 ...

  7. 一次Oracle宕机切换后产生ORA错误的处理过程

    问题背景 机房意外断电后Oracle主服务器启动失败,Oracle备机接管 为了安全,管理员对于数据库做expdp的逻辑备份.但备份时发现AttributeInstance表备份失败,提示ORA-01 ...

  8. linux数据库环境搭建

    linux数据库源码下载地址:http://www3.sqlite.org/download.html 下载完成之后,把源码放到linux下的目录,我们一步一步来搭建环境: 1.使用命令解压源码包 u ...

  9. 在mac下使用终端命令通过ssh协议连接远程linux系统,代替windows的putty

    指令:ssh username@server.address.com 事例:wangmingdeMacBook-Pro:~ xxxxxxxxxx$ ssh root@XXXX.net The auth ...

  10. c/s与b/s 动态网站与静态网站 (网站编码统一“UTF-8”)

    1.c/s和b/s 第一张图是b/s  可以随时随地的浏览  (在服务器增加网页就能增加功能,只要改变网页就能使用户同步更新,共享性也强,开发也简单,在广域网和局域网都能建造b/s结构,然后通过int ...