ubuntu22.04上添加STM32MP157、Qt5开发环境


前言

在大多数的情况下,Qt 库通常是在目标开发板的操作系统安装时安装的。这意味着,Qt 库作为操作系统的一部分已经预先安装在arm目标开发板文件系统中,并且与操作系统的版本和架构兼容。因此作为Qt arm 应用程序开发人员,每当遇到一款新架构arm设备,在搭建开发环境时,需要注意两件事:

  • 下载的Qt库与开发板上预装的Qt库版本保持尽量一致,至少必须兼容。
  • 编译Qt库和应用程序使用的交叉工具链与预装Qt库的工具链保持一致。

由于项目需要在STM32MP157-A7设备上使用Qt开发应用程序,再次进行了开发环境搭建,记录下整个过程,除了供未来查询需要,也为其他有相同需求的同仁提供一点参考。
与Qt4 安装到ubuntu22.04一样,如果希望在ubuntu中编译和安装qt5 for arm 源码库,也需要降低GCC的版本。我们通过使用 update-alternatives 命令来切换版本,即在不同版本的 GCC 和 G++ 之间进行切换,完成对QT5编译和安装。

前期的项目中,在我们已经将调试环境设置为双架构Kits,qt5 for ubuntu,qt4 for arm,本次我们在增加一个调试环境:qt5 for arm。

事实上,为原有系统再增加一个Qt5调试环境Kit,除了无需重新安装qtcreator,与新安装一个Qt5 Kit并无太大不同。

本文是在chatgpt的帮助下完成的,所有的步骤都亲测有效。

感谢朋友提供的chatgpt软件,特别是其中的gpt-box桌面工具,更是我离不开的工具。感兴趣的同仁可前往一观

www.apsuai.com

1、下载Qt库

https://download.qt.io/archive/qt/5.12/5.12.9/single/

在这里插入图片描述

2、下载交叉工具链

下载工具链 gcc-arm-9.2-2019.12-x86_64-arm-none-linux-gnueabihf.tar.xz

https://mirrors.tuna.tsinghua.edu.cn/armbian-releases/_toolchain/

在这里插入图片描述- 将下载的交叉工具链gcc-arm-9.2-2019.12-x86_64-arm-none-linux-gnueabihf.tar.xz,拷贝到/opt,解压:

tar -xvf gcc-arm-9.2-2019.12-x86_64-arm-none-linux-gnueabihf.tar.xz
  • 将解压缩的工具链目录添加到环境变量中,例如添加以下行到 ~/.bashrc 文件最后:
vim ~/.bashrc

export PATH=$PATH:/opt/gcc-arm-9.2-2019.12-x86_64-arm-none-linux-gnueabihf/bin
  • 运行 source ~/.bashrc 命令以更新环境变量。
source ~/.bashrc
  • 验证一下:
arm-none-linux-gnueabihf-gcc   -v

成功:

。。。
gcc 版本 9.2.1 20191025 (GNU Toolchain for the A-profile Architecture 9.2-2019.12 (arm-9.10)) 

3、环境准备

3.1 安装必要的依赖库

sudo apt-get install build-essential libfontconfig1 mesa-common-dev libglu1-mesa-dev libpulse-dev libicu-dev libsqlite3-dev libssl-dev libxcb-xinerama0-dev libxkbcommon-dev libxkbcommon-x11-dev libasound2-dev libgstreamer-plugins-base1.0-dev libgstreamer1.0-dev python3

3.2 检查python,解决找不到python错误

which python3

结果:

/usr/bin/python3

编译Qt库源代码时可能出现找不到python错误,如下处理可以解决

sudo cp /usr/bin/python3 /usr/bin/python

3.3 安装GCC版本9

在 Ubuntu 上安装 GCC 9 可以通过以下步骤实现:

  1. 添加 GCC 开发工具包(PPA)到软件源列表。打开终端并输入以下命令:
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt update
  1. 安装 GCC 9 及所有的补丁。在终端中输入以下命令:
sudo apt install gcc-9 g++-9
  1. 检查 GCC 是否已成功安装。在终端中输入以下命令来验证 GCC 版本:
gcc-9 --version
g++-9 --version

3.4 使用alternatives工具管理gcc优先级

使用alternatives工具管理gcc优先级,先将两个版本的gcc和g++加入到alternativers。

在 Linux 系统中,可能会安装多个版本的 GCC(GNU Compiler Collection),每个版本可能会提供不同的功能或优化。alternatives 工具提供了一种简单的方式来管理这些不同版本的 GCC,并设置默认的版本以供使用。

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 100
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 90
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-9 100
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-11 90

3.5 使用alternatives工具手动切换gcc版本

在使用update-alternatives命令安装多个gcc版本和g++之后,您可以使用下面的命令手动切换当前系统使用的默认编译器:

sudo update-alternatives --config gcc

这个命令将会显示一个类似下面的提示信息,在其中列出了系统中已经安装的所有gcc版本:

linux@linux-virtual-machine:~$ sudo update-alternatives --config gcc
有 2 个候选项可用于替换 gcc (提供 /usr/bin/gcc)。

  选择       路径           优先级  状态
------------------------------------------------------------
* 0            /usr/bin/gcc-9    100       自动模式
  1            /usr/bin/gcc-11   90        手动模式
  2            /usr/bin/gcc-9    100       手动模式

要维持当前值[*]请按<回车键>,或者键入选择的编号:0
sudo update-alternatives --config g++

这个命令将会显示一个类似下面的提示信息,在其中列出了系统中已经安装的所有g++版本:

linux@linux-virtual-machine:~$ sudo update-alternatives --config g++
有 2 个候选项可用于替换 g++ (提供 /usr/bin/g++)。

  选择       路径           优先级  状态
------------------------------------------------------------
* 0            /usr/bin/g++-9    100       自动模式
  1            /usr/bin/g++-11   90        手动模式
  2            /usr/bin/g++-9    100       手动模式

要维持当前值[*]请按<回车键>,或者键入选择的编号:

您可以输入要切换到的gcc版本的数字或者直接按下回车键使用当前选择的编译器,然后系统会自动配置当前默认的编译器。

4、QT5编译、安装

首先让当前登录用户获得/opt文件夹所有权:

sudo chown -R linux:linux /opt
  • 将第1节下载的的QT5.12.9源码拷贝/opt,解压:
sudo cp qt-everywhere-src-5.12.9.tar.xz  /opt
tar -xvf qt-everywhere-src-5.12.9.tar.xz
  • 进入 qt-everywhere-src-5.12.9 目录
 cd qt-everywhere-src-5.12.9
 cd qtbase
 cd mkspecs
  cd linux-arm-gnueabihf-g++
  • 编辑qmake.conf
 vim qmake.conf
  • 文件编辑结果如下:
#
# qmake configuration for building with arm-linux-gnueabi-g++
#
 
MAKEFILE_GENERATOR      = UNIX
CONFIG                 += incremental
QMAKE_INCREMENTAL_STYLE = sublib
 
include(../common/linux.conf)
include(../common/gcc-base-unix.conf)
include(../common/g++-unix.conf)
 
# modifications to g++.conf
QMAKE_CC                = arm-none-linux-gnueabihf-gcc
QMAKE_CXX               = arm-none-linux-gnueabihf-g++
QMAKE_LINK              = arm-none-linux-gnueabihf-g++
QMAKE_LINK_SHLIB        = arm-none-linux-gnueabihf-g++
 
# modifications to linux.conf
QMAKE_AR                = arm-none-linux-gnueabihf-ar cqs
QMAKE_OBJCOPY           = arm-none-linux-gnueabihf-objcopy
QMAKE_NM                = arm-none-linux-gnueabihf-nm -P
QMAKE_STRIP             = arm-none-linux-gnueabihf-strip
load(qt_config)
  • 配置编译参数:
    在解压源代码后,需要对编译参数进行配置,并指定目标平台、交叉编译器、库文件等信息。具体的编译参数可以参考 Qt 官方文档或手册,或通过 ./configure -h 命令进行查看。

回到 qt-everywhere-src-5.12.9 目录,执行下面指令:

./configure -prefix /home/linux/qt5-arm -xplatform linux-arm-gnueabi-g++ -no-opengl

在Qt应用开发中,OpenGL 主要用于图形渲染和创建三维图形界面,可提高应用界面的交互性和可视化效果,为用户带来更好的用户体验。由于配置时加上OpenGL编译无法通过。出错界面如下:

。。。
ERROR: The OpenGL functionality tests failed!
You might need to modify the include and library search paths by editing QMAKE_INCDIR_OPENGL[_ES2],
QMAKE_LIBDIR_OPENGL[_ES2] and QMAKE_LIBS_OPENGL[_ES2] in the mkspec for your platform.

因此,暂时将其移除。如果有了解决方案,再进行补充。(或有哪位读者对此有经验,欢迎在留言区赐教)

  • 编译并安装程序包
$ make -j8
$ sudo make install

5、配置qtcreator,增加Qt5 for arm Kit

  • 打开 Qt Creator,选择「工具」-「选项」-「构建和运行」 - 「Qt Versions」,界面如图:

在这里插入图片描述- 切换到「Kits」,点击「Add」,进行如下图配置,点击「应用」和「确定」保存设置
在这里插入图片描述
-新建项目时,在Kits选择页面,会显示本次增加的arm-qt5 Kit选项:

在这里插入图片描述到此,ubuntu22.04上添加STM32MP157、Qt5开发环境工作完成。


总结

前期的项目中,在我们已经将调试环境设置为双架构Kits,qt5 for ubuntu 和qt4 for arm,本次我们为STM32MP157-A7设备增加一个调试环境:qt5 for arm。
大多数arm设备,Qt 库会作为操作系统的一部分预先安装在设备文件系统中,因此对于arm Qt 应用程序开发人员,每当遇到一款新架构arm设备,在搭建开发环境时,首先需要确定两件事(1)下载的Qt库与开发板上预装的Qt库版本保持尽量一致,至少必须兼容。(2) 编译Qt库和应用程序使用的交叉工具链与预装Qt库的工具链保持一致。
本文介绍了为STM32MP157-A7设备搭建Qt5 for arm开发环境搭建过程。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值