ARM 版银河麒麟桌面系统下 Qt 开发环境搭建指南

目录

  • 前言
    • [安装Linux ARM 版 QtCreator](#安装Linux ARM 版 QtCreator)
    • [配置 Qt Creator](#配置 Qt Creator)
    • [第一个麒麟 Qt 应用程序](#第一个麒麟 Qt 应用程序)
    • 小结

前言

在上一篇文章信创ARM架构QT应用开发环境搭建中建议大家使用 Ubuntu X86 系统作为信创 ARM 架构 QT 应用的开发环境,里面使用了交叉编译的方式。这对于自己的 Qt 应用程序来说没有什么问题,但是对于一些第三方库或者一些第三方 Qt 组件,可能库的作者也没有考虑到交叉编译。这样编译第三方库的 ARM 版本会比较困难,这个时候,可能直接使用 ARM 环境来编译会更加简单。

目前 ARM 桌面 CPU 性能并不差,如果不是特别大型的应用程序,编译代码其实也没有什么问题。我手头的是一台华为的笔记本,CPU是华为鲲鹏 990,8核 (2 x Cortex-A76 2.86 GHz + 2 x Cortex-A76 2.09 GHz + 4 x Cortex-A55 1.86 GHz),内存8G(这个内存有点小,要是16G就好了),系统则是银河麒麟 V10 SP1 系统。

下面就介绍一下 ARM 版银河麒麟桌面系统下的 Qt 开发环境搭建过程。

安装Linux ARM 版 QtCreator

Kylin V10 SP1软件源中提供的Qt框架版本为 5.15.2 ,这是一个 LTS 版本,也是我们在项目中使用的版本。qmake对应版本为 3.1,Qt Creator对应版本为 4.14.1 。

安装过程非常简单,直接使用系统的包管理器就可以安装。

复制代码
$ sudo apt update
$ sudo apt install build-essential git gdb cmake
$ sudo apt install qt5-default qtcreator

其中 qt5-default 包中主要包括:

  • qtbase: Qt 基础模块的集合,比如 widgets, Gui 等;
  • qmake: qmake 是 Qt 项目的构建工具,通过 qmake 将 .pro 文件生成 make 文件,进而完成项目的编译;

qtcreator 包中主要包括:

  • qtcreator: Qt官方的 IDE;
  • qt助手: Qt 所有模块的说明文档;
  • qt linguist: Qt 进行文字内容国际化的可视化工具,帮助开发者对程序中需要翻译的文字内容进行对应语言的翻译;
  • qt设计器: Qt 对 UI 文件进行布置的可视化工具。

build-essential包中主要包括:

  • libc6-dev
  • gcc
  • g++
  • make
  • dpkg-dev

gdb 包为 Linux 下的调试工具。

安装完成后,可以在开始菜单项中找到它。启动 Qt Creator,查看一下版本信息:

配置 Qt Creator

安装完 Qt Creator,使用 Qt Creator 工程向导新建一个工程,走到最后一步却发现如下问题:

这是因为 Qt Creator 没有自动识别到 Qt 库的安装,这个时候需要手动添加。

配置构建套件

配置构建套件,就是指定编译器、调试器、qmake工具等。

在上图中点击 options,或者在 Qt Creator 主界面,点击 工具 | 选项,进行构建套件的配置。

先配置 Qt Version。点击 Qt Version 标签页,再点击 添加... 按钮。

在打开的对话框中选择 /usr/bin/ 目录下的 qmake:

这个 qmake 实际上链接到 /usr/lib/qt5/bin/qmake,所以实际上显示的是:

还可以配置 CMake 构建:

接下来可以修改默认的桌面 Kit

如果想增加一个自定义的 Kit,也可以点击新增,配置项可以自行调整。

点击确定,即可完成 Kits 的配置。

第一个麒麟 Qt 应用程序

利用工程向导,建立一个 Qt widget 程序,到了选择 Kits 那一步,可以看到有 桌面 Kit 可以选择:

工程建立后,点击 Qt Creator 的 Run,我们的第一个麒麟应用程序就运行起来了。

小结

本文介绍了在ARM 版麒麟系统下安装和配置 Qt 开发环境,并使用 Qt Creator 写了第一个 麒麟系统 Qt 应用程序。

本系列教程示例源码请参考: https://e.coding.net/mogoweb/qt-in-action/qt-in-action.git

相关推荐
海棠蚀omo17 分钟前
Linux操作系统-父进程的等待:一个关于回收与终结的故事
linux·操作系统
乌萨奇也要立志学C++17 分钟前
【Linux】Ext系列文件系统 从磁盘结构到文件存储的原理剖析
android·linux·缓存·1024程序员节
软安科技22 分钟前
专有软件使用Linux内核的用户头文件违反GPL吗?| 开源合规场景
linux·开源软件·开源协议
A-刘晨阳25 分钟前
K8S 二进制集群搭建(一主两从)
linux·运维·云原生·容器·kubernetes
egoist202338 分钟前
[linux仓库]信号处理[进程信号·伍]
linux·信号处理·写时拷贝·软中断·硬件中断·缺页中断·时钟中断
HIT_Weston1 小时前
15、【Ubuntu】【VSCode】VSCode 断联问题分析:UID 补充
linux·vscode·ubuntu
碰大点1 小时前
Ubuntu 16.04交叉编译arm-linux-gnueabihf的QT5.6.2
linux·arm开发·qt·ubuntu·arm-linux
小-黯2 小时前
Linux硬盘挂载脚本
linux·运维·服务器
PeaceKeeper72 小时前
简易的arm-linux库文件移植
linux·运维·arm开发
运维帮手大橙子2 小时前
最近面试题总结
linux·服务器·网络