Ubuntu64位系统(20.04、22.04)安装32位armQT4开发环境补充说明

这篇具有很好参考价值的文章主要介绍了Ubuntu64位系统(20.04、22.04)安装32位armQT4开发环境补充说明。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

在一些特定场景下我们可能需要在更高版本ubuntu上(比如Ubuntu20.04、Ubuntu22.04)安装 Qt 4,维护和开发32位armQT4应用程序。
对于高版本ubuntu, 官方对Qt 4 已经不再提供维护,因此需要解决许多兼容性问题。我们前面博文《Ubuntu64位系统(v18.04)下arm32位版本(Qt4.8.6和tslib1.4)开发环境搭建》详细介绍了
Ubuntu18.04版本中的配置过程。
在 Ubuntu 20.04和Ubuntu 22.04中,又出现了新的兼容性问题,如果希望在ubuntu中编译和安装qt4源码,则需要降低GCC的版本。我们是通过使用 update-alternatives 命令来切换版本,即在不同版本的 GCC 和 G++ 之间进行切换,完成对QT4编译和安装。本文以ubuntu22.04为例介绍了降低GCC版本的具体操作步骤。之后的搭建开发环境过程与ubuntu18.04中相同,不再赘述。
实际的开发环境搭建过程,其实不用那么麻烦,我们可以将已经编译安装完成的QT库(包括tslib)按照原来的安装路径,导入到新的ubuntu系统中,配置相同的交叉工具链,再配置当前的qtcreator即可。

尽管我们可以使用上面的方法在高版本Ubuntu安装32位armQT4开发环境,但还是建议考虑使用较新的 Qt 版本(如 Qt 5 或 Qt 6),因为它们具有更好的性能、更多的特性和更好的兼容性。


1、降低GCC的版本操作步骤

1.1 设置新的源

修改/etc/apt/sources.list文件

sudo  vim  /etc/apt/sources.list

在末尾增加如下配置:

deb http://dk.archive.ubuntu.com/ubuntu/ xenial main
deb http://dk.archive.ubuntu.com/ubuntu/ xenial universe

然后执行:

sudo apt-get update

结果如下:

命中:1 http://cn.archive.ubuntu.com/ubuntu jammy InRelease
命中:2 http://cn.archive.ubuntu.com/ubuntu jammy-updates InRelease            
获取:3 http://dk.archive.ubuntu.com/ubuntu xenial InRelease [247 kB]
命中:4 http://security.ubuntu.com/ubuntu jammy-security InRelease           
命中:5 http://cn.archive.ubuntu.com/ubuntu jammy-backports InRelease        
错误:3 http://dk.archive.ubuntu.com/ubuntu xenial InRelease
  由于没有公钥,无法验证下列签名: NO_PUBKEY 40976EAF437D05B5 NO_PUBKEY 3B4FE6ACC0B21F32
正在读取软件包列表... 完成
W: GPG 错误:http://dk.archive.ubuntu.com/ubuntu xenial InRelease: 由于没有公钥,无法验证下列签名: NO_PUBKEY 40976EAF437D05B5 NO_PUBKEY 3B4FE6ACC0B21F32
E: 仓库 “http://dk.archive.ubuntu.com/ubuntu xenial InRelease” 没有数字签名。
N: 无法安全地用该源进行更新,所以默认禁用该源。
N: 参见 apt-secure(8) 手册以了解仓库创建和用户配置方面的细节。

出现这个错误的原因是缺少 Ubuntu 存储库 GPG 密钥或未添加正确的 GPG 密钥而导致的。要解决这个问题,可以按照下面的步骤来导入正确的 GPG 密钥:

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 40976EAF437D05B5 3B4FE6ACC0B21F32

结果如下:

Warning: apt-key is deprecated. Manage keyring files in trusted.gpg.d instead (see apt-key(8)).
Executing: /tmp/apt-key-gpghome.yzoYZONxEt/gpg.1.sh --keyserver keyserver.ubuntu.com --recv-keys 40976EAF437D05B5 3B4FE6ACC0B21F32
gpg: 密钥 3B4FE6ACC0B21F32:公钥 “Ubuntu Archive Automatic Signing Key (2012) <ftpmaster@ubuntu.com>” 已导入
gpg: 密钥 40976EAF437D05B5:公钥 “Ubuntu Archive Automatic Signing Key <ftpmaster@ubuntu.com>” 已导入
gpg: 处理的总数:2
gpg:               已导入:2

再次运行以下命令来更新软件包列表:

sudo apt-get update

现在应该不会再出现该错误了。如果仍然遇到问题,请确保您的网络连接正常并尝试使用不同的存储库来更新软件包。

1.2 安装gcc-4.8 、g+±4.8

执行:

sudo apt-get install gcc-4.8 g++-4.8

检查 GCC 和 g++ 版本:

gcc-4.8 --version
g++-4.8 --version

现在,您应该已成功安装 GCC 4.8 和 g++ 4.8。

查看gcc安装情况:

ls /usr/bin/gcc* -l
lrwxrwxrwx 1 root root      6  85  2021 /usr/bin/gcc -> gcc-11
lrwxrwxrwx 1 root root     23  51  2022 /usr/bin/gcc-11 -> x86_64-linux-gnu-gcc-11
-rwxr-xr-x 1 root root 776344  126  2016 /usr/bin/gcc-4.8
lrwxrwxrwx 1 root root      9  85  2021 /usr/bin/gcc-ar -> gcc-ar-11
lrwxrwxrwx 1 root root     26  51  2022 /usr/bin/gcc-ar-11 -> x86_64-linux-gnu-gcc-ar-11
-rwxr-xr-x 1 root root  27032  126  2016 /usr/bin/gcc-ar-4.8
lrwxrwxrwx 1 root root      9  85  2021 /usr/bin/gcc-nm -> gcc-nm-11
lrwxrwxrwx 1 root root     26  51  2022 /usr/bin/gcc-nm-11 -> x86_64-linux-gnu-gcc-nm-11
-rwxr-xr-x 1 root root  27032  126  2016 /usr/bin/gcc-nm-4.8
lrwxrwxrwx 1 root root     13  85  2021 /usr/bin/gcc-ranlib -> gcc-ranlib-11
lrwxrwxrwx 1 root root     30  51  2022 /usr/bin/gcc-ranlib-11 -> x86_64-linux-gnu-gcc-ranlib-11
-rwxr-xr-x 1 root root  27032  126  2016 /usr/bin/gcc-ranlib-4.8

1.3 使用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-4.8 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++-4.8 100
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-11 90

1.4 安装交叉工具链、编译安装qt4.8.6和tslib1.4、安装配置qtcreator

按照前面的博文:《Ubuntu64位系统(v18.04)下arm32位版本(Qt4.8.6和tslib1.4)开发环境搭建》1~6节的方法,完成开发环境搭建。

2、导入已有的QT For Arm库和tslib

2.1 导出qt4-arm和tslib-arm

我们将按照《Ubuntu64位系统(v18.04)下arm32位版本(Qt4.8.6和tslib1.4)开发环境搭建》第5节的方法完成的QT4库qt4-arm文件夹和第4节完成的tslib-arm文件夹压缩。

 tar -czvf qt4-arm.tar.gz qt4-arm
 tar -czvf tslib-arm.tar.gz tslib-arm

得到两个压缩文件:qt4-arm.tar.gztslib-arm.tar.gz

按照我个人的习惯,在前面的编译安装中,将qt4-arm和tslib-arm两个文件夹放在了~/下,如果登录ubuntu系统的用户不同,绝对路径是不同的。如果你希望将两个文件夹导出,给其他ubuntu系统使用,则这是一个不好的习惯。建议安装目录放在/opt,会给未来的迁移减少很多麻烦。
本人这里不出问题是因为我的ubuntu用户名是相同的,也就是说,登录后两个系统的~/的绝对路径是相同的。

2.2 将qt4-arm和tslib-arm导入到新的ubuntu系统中

拷贝qt4-arm.tar.gztslib-arm.tar.gz到新的ubuntu系统中,解压。

tar -zxvf qt4-arm.tar.gz
tar -zxvf tslib-arm.tar.gz

2.3 安装交叉工具链、必要依赖库、针对x86-32架构的zlib库、配置qtcreator

参见《Ubuntu64位系统(v18.04)下arm32位版本(Qt4.8.6和tslib1.4)开发环境搭建》第1节、第2节、第3节、第6节。

3、解决开发项目中的问题

开发环境搭建完成后,我们新建一个项目,编译时会出现下面的问题:
Ubuntu64位系统(20.04、22.04)安装32位armQT4开发环境补充说明,qt嵌入式开发,qt,ubuntu,arm开发Qt Creator 是一个集成了编译器的 IDE 工具,最新版本的 Qt Creator 默认使用了 C++11 标准。
上面这个错误消息表示在自动生成的代码中使用了 C++11 新增的关键字 nullptr,但是编译器并不认识它,导致编译失败。

解决的方法是为项目追加一个编译选项:

  • GCC 编译器版本 < 4.7。
QMAKE_CXXFLAGS += -std=c++0x
  • GCC 编译器版本 >= 4.7。
QMAKE_CXXFLAGS += -std=c++11

这个选项的意义是告诉编译器将代码编译成符合 C++11 标准的代码。这意味着在编译时编译器会遵循 C++11 标准规范对代码进行编译,而且在代码中可以使用 C++11 新引入的特性。如果不在编译选项中加上 -std=c++0x或-std=c++11,代码中使用一些新特性,比如 nullptr、auto、range-based for loops 等,就会出现编译错误。

具体操作如下:打开项目中的.pro文件,如图中修改:
Ubuntu64位系统(20.04、22.04)安装32位armQT4开发环境补充说明,qt嵌入式开发,qt,ubuntu,arm开发
这个编译选项并不是放弃使用 C++11 标准,相反它是支持使用 C++11 标准。注意,如果你希望使用更高版本的标准,比如 C++14 或 C++17,只需要将 -std=c++11 替换成 -std=c++14 或 -std=c++17 即可。

总之,通过将 -std=c++0x-std=c++11 选项添加到 QMAKE_CXXFLAGS 中,项目就可以在可支持 C++11 的编译器下编译 C++11 标准的代码了。文章来源地址https://www.toymoban.com/news/detail-625955.html

到了这里,关于Ubuntu64位系统(20.04、22.04)安装32位armQT4开发环境补充说明的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Ubuntu官方安装微信——Ubuntu16.04/18.04/20.04/22.04

    通过以下教程可以快速的安装官方版微信,本教程适用于Ubuntu16.04/18.04/20.04/22.04 进入微信下载官网下载微信Linux客户端 点击64位下载即可,如果不能下载,使用终端如下命令 双击deb文件,点击install进行安装 安装成功,可以在菜单中点击运行

    2024年02月08日
    浏览(48)
  • Windows11+Ubuntu20.04系统重装(升级为Ubuntu22.04)

    事情起因是标题所对应的双系统中,Ubuntu老自动断电关机,一开始是跑大型程序才会关机,这两天愈演愈烈变成运行一个远程控制或者VSCode就会关机。一怒之下找了Dell在线客服,在对方引导下检测了硬件系统,发现没有明显故障,对方建议重装出问题的软件后看现象是否消失

    2024年04月26日
    浏览(56)
  • 下载安装Ubuntu 20.04详细教程(内附安装22.04版本教程链接)

    🌈 个人主页:python老鸟的博客 🔆 免费专栏:Python基础教程 ❤️  分享网站: 《Python自学网》👉👉基础入门到逐步深入  |  适合新手入门到精通  | python全栈体系课程   🙏 如果觉得博主文章对你有所帮助的话,还望大家多多支持呀!关注  |  点赞  |  收藏  |  评论

    2024年01月21日
    浏览(72)
  • Ubuntu安装向日葵远程控制——Ubuntu18.04/20.04/22.04

    通过以下教程可以快速的安装向日葵远程控制,本教程适用于Ubuntu18.04/20.04/22.04 进入向日葵远程控制下载官网下载向日葵远程控制Linux客户端 选择图形版本安装包下载,可以看到适用于17.04及以上版本 双击deb文件,点击install进行安装 安装成功,在菜单里可以打开

    2024年02月12日
    浏览(52)
  • 【安装教程】ubuntu20.04/22.04从零开始搭建autoware.universe

    目录 1. 基本配置情况 2. ROS2 Humble和git安装  2.1 ros2 humble安装(对应ubuntu22.04,仅源码安装需要) 2.2 git安装  3. 克隆autoware代码  4.自动安装依赖项(推荐) 5. 手动安装依赖项(在一键配置失效下使用,这里仅列出docker安装中需要的依赖)  5.1 cuda安装  5.2 docker engine安装 5.3 

    2024年01月18日
    浏览(71)
  • 【ubuntu环境配置】超详细ubuntu20.04/22.04安装nvidia驱动/CUDA/cudnn

    nvidia显卡驱动安装方式有三种:使用ubuntu附加驱动的方式;使用命令行方式安装;使用.run文件的方式进行安装, 点击菜单中的Additional Drivers选择适合的驱动版本进行安装,该方法最方便快捷(但有时会翻车) 更新所有的软件包 安装显卡驱动 详见我的另一篇博客Ubunut20.04/2

    2024年01月22日
    浏览(75)
  • Ubuntu18.04/20.04/22.04的Apollo8.0软件包安装(免编译)

    本文主要介绍在如何使用软件包(即 deb 包)的方式来安装 Apollo,相对于源码方式安装,软件包安装方式不需要编译,更加快捷。但是对环境的支持比较单一,如果在自定义环境内安装,请移步源码安装方式 1. 安装 Ubuntu Linux 安装 Ubuntu 18.04+ 的步骤,参见 官方安装指南。 完

    2024年02月05日
    浏览(64)
  • Ubuntu20.04升级到Ubuntu 22.04

    执行如下命令将Ubuntu升级到最新的版本: 升级完成后,重启系统 重启成功之后,查看系统的当前版本 最新版本应该是20.04.6,如下图所示。 执行如下命令开始升级 一路yes或确认即可,下面是一些过程中的操作。 所有当前 Ubuntu 20.04 的源列表文件将被 Ubuntu 22.04 的 jammy 源列表

    2024年02月17日
    浏览(50)
  • 如何将 Ubuntu 20.04 升级到 Ubuntu 22.04?

    Ubuntu 22.04,代号“Jammy Jellyfish”,于 2022 年 4 月 21 日发布,本文介绍如何将 Ubuntu 20.04 升级到 Ubuntu 22.04?。 在升级到 Ubuntu 22.04 之前,你应该做以下事情: 备份外部驱动器上的所有文件。 确保您有稳定的互联网连接。 禁用任何外部存储库。 请注意,这可能会导致某些服务

    2024年02月06日
    浏览(54)
  • Ubuntu 20.04 升级Ubuntu 22.04 及更换国内源指南

    打开虚拟机,发现我的ubuntu版本还停留在20.04上,主要平时都用的实体机,树莓派以及Centos系统居多,虚拟机也不是经常使用,今天闲来无事就把它升级到22.04吧,升级到Ubuntu 22.04.1 LTS版本后它可以提供免费安全和维护更新至 2027年4月。 我们点开左下角的应用中心,启动紫色

    2024年01月24日
    浏览(69)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包