手把手之如何在嵌入式Linux上运行QT应用程序(以百问网imx6ull开发板为例)

简介: 手把手之如何在嵌入式Linux上运行QT应用程序(以百问网imx6ull开发板为例)

写了一篇Buildroot构建的文章,等待了几个小时,终于编译完了:


Buildroot系统构建学习笔记(以百问网imx6ull开发板为例)

640.png

640.png

我们将emmc下载到开发板上即可:

640.png

640.png

640.png

这个QT程序我不想吐槽,实在是太卡了,我做了这么久的嵌入式QT开发,都没写过这样的程序,所以,接下来,我要用开发板运行自己写的QT程序:

1、安装QT开发环境

百问网提供的QT安装包和QT的配置方法有一些问题,配置完成后打开qtcreator后代码提示很多东西都找不到,但是又可以正常编译,这就奇怪了,于是我不用他们提供的开发环境,自己独立安装。

ubuntu18.04下安装QT开发环境:

sudo apt-get install cmake qt5-default qtcreator

如果在安装的过程中出现失败,请重新尝试apt-get update后再进行重新安装,不然的话就更新源吧!安装完毕以后,在终端敲qt然后按Tab键就可以看到qt已经成功被安装到系统里了:

640.png

2、配置交叉编译环境

2.1、配置gcc和g++

这部分直接用百问网提供的交叉编译工具就可以啦,这是我的路径:

640.png

640.png

2.2、配置qmake

这部分就是一部分里的Buildroot交叉编译出来的qmake,在Buildroot目录下执行find . -name qmake找到这个文件然后配置到QT的编译工具链里即可。

640.png

640.png

2.3、配置构建工具链

640.png

这样交叉编译工具就配置完成了!

3、编写QT测试程序(一)

怎么创建QT程序就不用多说了吧!略..(不会自行度娘)

640.png

640.png

以上实现了一个简单的功能,当用户点击Button按钮时,Label控件里的文本变为hello world,编译完直接运行一下,然后用鼠标点击Button,如下所示:

640.png

接下来我们需要让这个程序在开发板上运行,需要采用100ask_imx6ull配置的交叉编译工具链来编译:

640.png

然后重新编译一下,注意,这个程序是不能直接在PC端运行的,这能在百问网的imx6ull开发板上运行。

640.png

由于我的笔记本电脑没有网口,所以目前只能通过SD卡的方式将交叉编译的程序拷贝到开发板上。

640.png

接下来操作开发板端,在串口终端将插入的SD卡进行挂载到/mnt目录下,然后在开发板端将其拷到/home/myir目录下:

640.png

接下来切换到/etc/init.d/

640.png

以下这一些是TSLIB环境变量以及QT应用程序环境变量,如果没有的话,则程序不能正常触摸或者不能正常显示:

640.png

将默认的运行程序直接注释掉:

640.png

然后保存完切换到/etc目录下,打开vim profile:

640.png

将刚刚注释的那部分放到这个文件的末尾:

640.png

然后保存后reboot重新启动开发板,切换到cd /home/myir:

640.png

执行test_qt:640.png

640.png

触摸Button以后:

640.png

如果想要程序开机就直接运行,则需要在脚本里让环境变量生效之后,再执行qt程序,以下是我添加的一个启动脚本S85qt.sh:

#!/bin/sh
start() {
        echo 4 > /sys/class/backlight/backlight/brightness
        source /etc/profile
        /home/myir/test_qt  &
}
stop() {
        exit 1
}
case "$1" in
        start)
                start
                ;;
        stop)
                stop
                ;;
        *)
                echo "Usage: $0 {start| stop|restart}"
                exit 1
esac
exit $?

640.png

这样的话重新开机以后我们的app就可以直接启动了!

4、编写QT测试程序(二)

接下来我们来使用QT控件控制屏幕背光亮度,背光亮度的操作,只需要往下面这个文件里写具体范围的数值就可以控制背光亮度了:

/sys/class/backlight/backlight/brightness

这个在百问的文档里也有描述:

640.png

在原来的QT上添加一个滑动条控件:

640.png

然后编写QT程序:


代码如下:

#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    this->move(0,0);
}
MainWindow::~MainWindow()
{
    delete ui;
}
void MainWindow::on_pushButton_clicked()
{
    ui->label->setText("Hello World");
}
void MainWindow::on_horizontalSlider_valueChanged(int value)
{
    qDebug() << value ;
    int backlight = value / 12;
    ui->label->setText(QString("backlight:%1").arg(backlight));
    QString str = QString("echo %1 > /sys/class/backlight/backlight/brightness").arg(backlight);
    QByteArray ba = str.toLatin1();
    qDebug() << ba ;
    ::system(ba);
}

640.png

将该程序进行交叉编译,然后拷贝到开发板下,覆盖原来的test_qt,运行效果如下:

640.png

关于QT的学习深入,最近正点原子发布了他们的QT教程,各位有兴趣可以去正点原子的官网下载学习或者后台回复”QT教程“,即可获得以下文档!

640.png

QT项目实战与界面UI


 1 车载音乐APP项目主界面


   车载音乐APP主界面是我们一个UI主界面实战项目,教会大家如何搭建产品主界面APP,大家可以直接在此项目实战例程上开发自己的产品:


2 语音识别项目界面    


  目前智能AI音箱很火,本项目在正点原子开发板上结合百度云实现简单的语音识别项目:


3 智能家居物联网项目


  智能家居也是目前很火的一个方向,本项目结合原子云实现一个简单的智能家居控制中心,操作界面如下:


4  多媒体播放器      


   音乐播放器与视频播放器


教程目录

         

    教程目录如下:

640.png

640.png640.png

640.png

640.png

往期精彩

Buildroot系统构建学习笔记(以百问网imx6ull开发板为例)


Linux 驱动开发 / gpio子系统 / 快速入门


全面认识 Qt Widgets、QML、Qt Quick


圆曾经的小车梦,造一台智能小车(四)之QT上位机控制小车


会C/C++就可以开发Linux/Android应用程序?替代传统串口屏的Yoxios了解一下!

目录
相关文章
|
2月前
|
安全 Linux iOS开发
Nessus Professional 10.10 Auto Installer for RHEL 10, AlmaLinux 10, Rocky Linux 10 - Nessus 自动化安装程序
Nessus Professional 10.10 Auto Installer for RHEL 10, AlmaLinux 10, Rocky Linux 10 - Nessus 自动化安装程序
196 6
Nessus Professional 10.10 Auto Installer for RHEL 10, AlmaLinux 10, Rocky Linux 10 - Nessus 自动化安装程序
|
5月前
|
安全 应用服务中间件 网络安全
在Linux环境部署Flask应用并启用SSL/TLS安全协议
至此,你的Flask应用应该能够通过安全的HTTPS协议提供服务了。记得定期更新SSL证书,Certbot可以帮你自动更新证书。可以设定cronjob以实现这一点。
368 10
|
5月前
|
Java Linux 网络安全
Linux云端服务器上部署Spring Boot应用的教程。
此流程涉及Linux命令行操作、系统服务管理及网络安全知识,需要管理员权限以进行配置和服务管理。务必在一个测试环境中验证所有步骤,确保一切配置正确无误后,再将应用部署到生产环境中。也可以使用如Ansible、Chef等配置管理工具来自动化部署过程,提升效率和可靠性。
592 13
|
4月前
|
存储 数据采集 监控
ubuntu(linux)系统主要应用于哪些工业场景中?研维三防ubuntu系统的手持工业三防平板电脑在哪些行业中有实际应用
Ubuntu 系统凭借其独特的优势,在众多工业场景中得到了广泛应用,为工业数字化、智能化发展提供了有力支持。而研维三防基于 Ubuntu 定制系统的手持工业三防平板电脑,更是将 Ubuntu 系统的优势与工业级的性能、坚固耐用性完美结合,在电力、物流、制造等多个行业中展现出强大的应用价值,助力企业提高生产效率、优化管理流程、提升产品质量,成为推动工业现代化发展的重要力量。随着技术的不断进步与创新,相信 Ubuntu 系统以及研维三防这类工业级设备将在更多的工业领域中发挥更大的作用,为工业发展带来更多的机遇与变革。
|
7月前
|
安全 测试技术 Linux
Flawnter 5.9.1 (macOS, Linux, Windows) - 应用程序安全测试软件
Flawnter 5.9.1 (macOS, Linux, Windows) - 应用程序安全测试软件
262 2
Flawnter 5.9.1 (macOS, Linux, Windows) - 应用程序安全测试软件
|
10月前
|
机器学习/深度学习 安全 Linux
Linux 主要应用领域的归纳
服务器领域 Linux在服务器领域的应用是其最为广泛和成熟的领域之一。由于其开源、稳定、高效和安全的特性,Linux成为许多企业服务器的首选操作系统。 Web服务器:Linux是Web服务器的理想选择,因为它支持Apache、Nginx等流行的Web服务器软件,这些软件在Linux上运行稳定且性能卓越。Linux服务器可以高效地处理大量并发请求,提供快速、可靠的Web服务。 数据库服务器:Linux也广泛用于数据库服务器,如MySQL、PostgreSQL和Oracle等数据库管理系统在Linux上运行良好。Linux的稳定性和安全性使得它成为存储和管理敏感数据的理想平台。 邮件服务器:Lin
566 5
|
11月前
|
Ubuntu Linux 开发者
Ubuntu20.04搭建嵌入式linux网络加载内核、设备树和根文件系统
使用上述U-Boot命令配置并启动嵌入式设备。如果配置正确,设备将通过TFTP加载内核和设备树,并通过NFS挂载根文件系统。
611 15
|
存储 监控 Linux
嵌入式Linux系统编程 — 5.3 times、clock函数获取进程时间
在嵌入式Linux系统编程中,`times`和 `clock`函数是获取进程时间的两个重要工具。`times`函数提供了更详细的进程和子进程时间信息,而 `clock`函数则提供了更简单的处理器时间获取方法。根据具体需求选择合适的函数,可以更有效地进行性能分析和资源管理。通过本文的介绍,希望能帮助您更好地理解和使用这两个函数,提高嵌入式系统编程的效率和效果。
548 13
|
缓存 Linux 开发者
Linux内核中的并发控制机制:深入理解与应用####
【10月更文挑战第21天】 本文旨在为读者提供一个全面的指南,探讨Linux操作系统中用于实现多线程和进程间同步的关键技术——并发控制机制。通过剖析互斥锁、自旋锁、读写锁等核心概念及其在实际场景中的应用,本文将帮助开发者更好地理解和运用这些工具来构建高效且稳定的应用程序。 ####
259 5