在ubuntu下搭建Qt Creator的arm交叉编译环境

2023-11-15

        Qt Creator是跨平台的 Qt IDE, Qt Creator 是 Qt 被 Nokia 收购后推出的一款新的轻量级集成开发环境(IDE)。此 IDE 能够跨平台运行,支持的系统包括 Linux(32 位及 64 位)、Mac OS X 以及 Windows。使用Qt Creator进行嵌入式程序开发是一个很好的选择。所以今天我们来学习一下如何搭建基于Qt Creator的开发环境。

一、前期准备

在使用Qt Creator进行嵌入式开发之前,首先要准备一些基本的软件安装。

1、安装交叉编译工具链

       关于交叉编译工具链的安装,可以参考我的另一篇文章,链接如下

https://blog.csdn.net/bhniunan/article/details/104307846

安装好交叉编译工具链之后,所有交叉编译工具在/opt/FriendlyARM/toolschain/4.5.1/bin目录下,在中断上查看这个目录下的内容如下,这个目录我们在设置Qt Creator时会用到。

arm-linux-addr2line  arm-linux-g++        arm-linux-ldd       arm-linux-size                    arm-none-linux-gnueabi-cc         arm-none-linux-gnueabi-gcov     arm-none-linux-gnueabi-populate
arm-linux-ar         arm-linux-gcc        arm-linux-nm        arm-linux-strings                 arm-none-linux-gnueabi-c++filt    arm-none-linux-gnueabi-gprof    arm-none-linux-gnueabi-ranlib
arm-linux-as         arm-linux-gcc-4.5.1  arm-linux-objcopy   arm-linux-strip                   arm-none-linux-gnueabi-cpp        arm-none-linux-gnueabi-ld       arm-none-linux-gnueabi-readelf
arm-linux-c++        arm-linux-gccbug     arm-linux-objdump   arm-none-linux-gnueabi-addr2line  arm-none-linux-gnueabi-g++        arm-none-linux-gnueabi-ldd      arm-none-linux-gnueabi-size
arm-linux-cc         arm-linux-gcov       arm-linux-populate  arm-none-linux-gnueabi-ar         arm-none-linux-gnueabi-gcc        arm-none-linux-gnueabi-nm       arm-none-linux-gnueabi-strings
arm-linux-c++filt    arm-linux-gprof      arm-linux-ranlib    arm-none-linux-gnueabi-as         arm-none-linux-gnueabi-gcc-4.5.1  arm-none-linux-gnueabi-objcopy  arm-none-linux-gnueabi-strip
arm-linux-cpp        arm-linux-ld         arm-linux-readelf   arm-none-linux-gnueabi-c++        arm-none-linux-gnueabi-gccbug     arm-none-linux-gnueabi-objdump

2、交叉编译QT库

       关于编译QT库的方法,可以参考我的另一篇文章,链接如下

https://blog.csdn.net/bhniunan/article/details/104309133

编译好的qt库,安装在/opt/Qt4.7目录下,这个目录下面我们也会用到。

3、安装Qt Creator

        Qt Creator集成开发环境可以从官网上下载http://download.qt.io/archive/qt/,至于版本并不重要,下载一个比较新的版本就行,我这里用的是qt-opensource-linux-x64-5.8.0.run,首先用下面的命令改变文件的权限

chmod 777 qt-opensource-linux-x64-5.8.0.run

然后用下面的命令运行该文件

./qt-opensource-linux-x64-5.8.0.run

会跳出来软件安装窗口,下面就和windows系统比较类似了,按照提示安装就行了。

二、配置Qt Creator交叉编译环境

        下面我们就进入了最关键的步骤,配置 Qt Creator的交叉编译。首先,打开 Qt Creator软件,在软件菜单栏中选择Tools->Options...打开如下窗口

1、添加qmake

按上图的顺序点击,在点击Add...之后,选择我们在上面步骤中编译的qt库中的qmake,给它起个名字Qt4.7.0。添加之后如步骤4。然后点击OK。

2、添加交叉编译器

 在上面的窗口中,按照图中标注的数字顺序点击,点击Add之后选择GCC->C,如下图所示

在第4步输入名称,可以随便输入,只是编译器的名字,在第6步选择我们之前安装的交叉编译工具链arm-linux-gcc,然后点击Apply。

然后继续点击Add之后选择GCC->C++,如下图所示

在第8步输入名称,与第4步一致,在第10步选择我们之前安装的交叉编译工具链arm-linux-g++,然后点击OK。

3、添加Kits

按照图中的编号点击,点击Add之后,在3中起一个名字armqt,这个名字可以随便起。第4步选择Device type,第5步选择我们之前添加的c和从c++编译工具,第6步选择之前添加的Qt4.7.0,最后点击OK。

        至此,我们完成了qt creator的设置。

三、用Qt Creator编译嵌入式程序

        我们用Qt Creator开发的ui程序,可以先用上位机的编译环境调试,调试完成需要发布时,需要进行一下设置,如下图所示。

在工程窗口中,先点击Projects,然后点击armqt下的Build,注意此时armqt会变为加粗字体,这说明工程已经被设置到交叉编译工具的编译环境下,在右侧3处选择Release,其他都是自动生成的,不用设置。

       最后点击窗口左下角的小锤子标志,构建可执行文件。生成的可执行文件,在工程相同的目录下的一个以Release结尾的文件夹下。这个文件就是可以在嵌入式平台下运行的程序。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在ubuntu下搭建Qt Creator的arm交叉编译环境 的相关文章

  • 如何使用 SVN 通过网络提交单个文件?

    我可以查看整个svn使用以下命令存储库 svn co https myaccount svn beanstalkapp com myapp 但我无法弄清楚提交单个文件的命令 如果我改变成myapp page1 html 我怎样才能只签入那一
  • 如何删除树莓派的相机预览

    我在我的 raspberryPi 上安装了 SimpleCv 并安装了用于使用相机板的驱动程序 uv4l 驱动程序 现在我想使用它 当我在 simpleCV shell Camera 0 getImage save foo jpg 上键入时
  • 无法为 Python 3.4 创建工作虚拟环境

    I 安装Python 3 4 2 https docs python org 3 using unix html building python和我的 Linux Mint 17 1 中的 Virtualenv 12 0 5 然后我尝试创建
  • 我在哪里可以学习如何使 C++ 程序与操作系统 (Linux) 交互

    我是一个 C 初学者 我想创建与操作系统交互的小程序 使用 Kubuntu Linux 到目前为止 我还没有找到任何教程或手册来让 C 与操作系统交互 在 PHP 中 我可以使用命令 exec 或反引号运算符来启动通常在控制台中执行的命令
  • 使用 sed 将 old-link-url 替换为 new-link-url

    我正在 bash 中编写一个脚本 将 old link url 替换为 new link url 我的问题是 sed 由于斜杠而无法替换 url 如果我只输入一些文字就可以了 my code sed e s old link new lin
  • Beaglebone Black 的 U-boot 无法构建 - 目标 CPU 不支持 THUMB 指令

    我正在尝试按照 Chris Simmonds 的 掌握嵌入式 Linux 编程 中的说明为 Beagle Bone Black 构建 u boot 我已经构建了交叉工具链 现在正在尝试使用该工具链构建 Das U boot 但由于不支持 T
  • DS-5:什么是 FVP、RTSM、基础模型、AEM 模型、快速模型、CADI?

    DS 5 模拟器使用了很多术语 如 FVP RTSM 快速模型 基础模型 AEM 模型 CADI Arm的文档中提供的解释不是很清楚 这些术语的含义是什么 作为 DS 5 的最终用户我应该关心哪些术语 Model 软件模拟的行业术语 就 A
  • 如何从“git log”中查看 Git 中的特定版本?

    My git log显示为 enter code here git trial git log commit 4c5bc66ae50780cf8dcaf032da98422aea6e2cf7 Author king lt email pro
  • 远程linux服务器到远程linux服务器大型稀疏文件复制 - 如何?

    我有两台 CentOS 5 4 服务器 每台服务器上都安装了 VMware Server 假设我始终对 vmware 虚拟机使用稀疏文件 将虚拟机文件从一台服务器复制到另一台服务器的最可靠 最快速的方法是什么 虚拟机的文件复制起来很痛苦 因
  • Xenomai 中的周期性线程实时失败

    我正在创建一个周期性线程 它在模拟输出上输出方波信号 我正在使用 Xenomai API 中的 Posix Skin 和 Analogy 我使用示波器测试了代码的实时性能 并查看了方波信号 频率为 1kHz 的延迟 我应该实现 250us
  • Linux 文本文件操作

    我有一个格式的文件 a href a href a href a href 我需要选择 之后但 之前的文本 并将其打印在行尾 添加后 例如 a href http www wowhead com search Su a a a a a
  • 在 Ubuntu 16.04 中创建虚拟主机

    我已经开始在 laravel 中工作并使用 lampp 我看过很多使用虚拟主机来制作用户友好的 url 的教程 我想在 Ubuntu 16 04 上执行此操作 以下教程对我不起作用 https ourcodeworld com articl
  • 有没有人在 Ubuntu 16.04 LTS 上安装 QGIS

    按照以下网址提供的说明进行操作 这一页 http www qgis org en site forusers alldownloads html并收到以下错误 以下软件包具有未满足的依赖关系 python qgis Depends pyth
  • 为什么 ld 无法从 /etc/ld.so.conf 中的路径找到库?

    我想添加 opt vertica lib64进入系统库路径 所以我执行以下步骤 1 添加 opt vertica lib64 into etc ld so conf 然后运行ldconfig 2 检查 bash ldconfig p gre
  • 我应该使用哪个 Linux 发行版作为 Xen 主机? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我为家庭办公室订购了一台服务器 我想用 Xen 对其进行分区 我认为这将使事情保持干净并且更容易维护 我将运行 MySQL PostgreSQL
  • 在 shell 脚本中查找和替换

    是否可以使用 shell 在文件中搜索然后替换值 当我安装服务时 我希望能够在配置文件中搜索变量 然后在该值中替换 插入我自己的设置 当然 您可以使用 sed 或 awk 来完成此操作 sed 示例 sed i s Andrew James
  • 无关的库链接

    我有一个可能有点愚蠢的问题 因为我很确定我可能已经知道答案了 假设你有静态库A 动态共享库B和你的linux下的程序C 假设库 A 调用库 B 中的函数 并且您的程序调用库 A 中的函数 现在假设 C 在 A 中调用的所有函数都不使用 B
  • 是否从页面缓存中的脏页面进行文件读取?

    当字节写入文件时 内核不会立即将这些字节写入磁盘 而是将这些字节存储在页缓存中的脏页中 回写缓存 问题是 如果在脏页刷新到磁盘之前发出文件读取 则将从缓存中的脏页提供字节 还是首先将脏页刷新到磁盘 然后进行磁盘读取以提供字节 将它们存储在进
  • 进程名称长度的最大允许限制是多少?

    进程名称允许的最大长度是多少 我正在读取进程名称 proc pid stat文件 我想知道我需要的最大缓冲区 我很确定有一个可配置的限制 但就是找不到它在哪里 根据man 2 prctl http man7 org linux man pa
  • 如何通过代理将套接字连接到http服务器?

    最近 我使用 C 语言编写了一个程序 用于连接到本地运行的 HTTP 服务器 从而向该服务器发出请求 这对我来说效果很好 之后 我尝试使用相同的代码连接到网络上的另一台服务器 例如 www google com 但我无法连接并从网络中的代理

随机推荐

  • 图像质量评估——论文精读系列

    Madhusudana P C Birkbeck N Wang Y et al Image quality assessment using contrastive learning J IEEE Transactions on Image
  • Java线程:线程状态的转换

    本文转载至 http lavasoft blog 51cto com 62575 99153 一 线程状态类型 1 新建状态 New 新创建了一个线程对象 2 就绪状态 Runnable 线程对象创建后 其他线程调用了该对象的start 方
  • Java等调用python深度学习训练的模型(待完成)

    1 参考博客园 java web应用调用python深度学习训练的模型 2 参考CSDN Java调用Python的训练模型 3 参考博客园 使用java调用python训练出的pmml模型 4 参考简书 java调用python方法 5
  • sum 加 Group By 的使用

    1 A 表 有server id 为1的两条数据 2 B表有server id 为1的数据也有两条 原本Sql是这样 乍一看没啥问题 但是group by 没生效 SELECT a server id sum b score as scor
  • AXI总线之DDR控制器的实现

    由于FPGA的内部RAM资源实在有限 同时又不得不面临大数据量缓存的问题 因此 将DDR进行共享成了最为直接有效的解决方案 设计目标 PL端有多个需要大量数据缓存的通道 让每个通道都将DDR作为外部缓存 FIFO 注意 总的突发在1Gbps
  • 8_请求体-字段

    8 请求体 字段 与使用 Query Path 和 Body 在路径操作函数中声明额外的校验和元数据的方式相同 你可以使用 Pydantic 的 Field 在 Pydantic 模型内部为属性字段声明校验和元数据 1 导入Field fr
  • sql server数据库只有mdf文件,没有ldf,如何加载

    使用sql命令加载 USE master GO CREATE DATABASE northwind ON FILENAME N D db NWind mdf 修改这里的路径 FOR ATTACH REBUILD LOG GO
  • Mysql查询数据库容量大小

    记录一下 好东西 防止忘了 select table schema as 数据库 table name as 表名 table rows as 记录数 truncate data length 1024 1024 2 as 数据容量 MB
  • 常见的几种手机传感器

    传感器Sensor就是手机里那些可以被测量并且能按照一定的规律转换成可用输出信号的器件或装置 一般这类传感器都是由敏感元件以及转换元件组成 手机上的那些能够通过芯片来感应的元器件 如反应距离值 光线值 温度值 亮度值和压力值等 那手机常见的
  • 2-2. 然后是几点(15)

    有时候人们用四位数字表示一个时间 比如1106表示11点零6分 现在 你的程序要根据起始时间和流逝的时间计算出终止时间 读入两个数字 第一个数字以这样的四位数字表示当前时间 第二个数字表示分钟数 计算当前时间经过那么多分钟后是几点 结果也表
  • java中异常总结-值得一看

    本文要点 1 Throwable把错误进一步划分为 java lang Exception 和 java lang Error java lang Error 用来处理系统错误 2 所有继承自RuntimeException的异常都被称为非
  • vue3+pinia的使用,刷新后不丢数据

    前言 好用的状态管理器 vue3中出来的pinia 相比较vuex来说 更加轻便 使用也更方便 官方文档 点我 github地址 点我 pinia与vuex相比较优点 pinia 是轻量级状态管理工具 大小只有1KB pinia 模块化设计
  • 深入理解Spring的事务传播行为

    前言 Spring在TransactionDefinition接口中规定了7种类型的事务传播行为 事务传播行为是Spring框架独有的事务增强特性 它不属于的事务实际提供方数据库行为 这是Spring为我们提供的强大的工具箱 使用事务传播行
  • JAVA练习(3)

    模拟双色球生成案例 需求 体彩中有一项是双色球 要求在1 33号共33个红色球里选出6个 1 16号共16个蓝色球中选出一个作为中奖号码 请实现这个需求 分析 1 定义两个方法来输出红色球和蓝色球 2 需要从33个红色球中选出6个 所以不能
  • element ui 弹出组件的遮罩层以及多层遮罩解决办法

    做项目中遇到几次弹出框遮罩层的问题 有嵌套的 弹出框 还有单页面中tabs标签页的弹出框 今天就说一下tabs中的弹出框遮罩层的问题 这个页面有五个tabs页签 每一个都有弹出框组件 也就是说每一个都有遮罩层 很有趣的问题 我在第五个tab
  • 神经网络学习小记录71——Tensorflow2 使用Google Colab进行深度学习

    神经网络学习小记录71 Tensorflow2 使用Google Colab进行深度学习 注意事项 学习前言 什么是Google Colab Colab官网 利用Colab进行训练 一 数据集与预训练权重的上传 1 数据集的上传 2 预训练
  • 相机的运动

    using UnityEngine using System Collections using System Collections Generic using DG Tweening using UnityEngine EventSys
  • 数字基带信号(单极性归零、单极性不归零、双极性归零和双极性不归零)波形仿真设计(matlab)

    一 实验目的 了解数字基带信号 单极性归零 单极性不归零 双极性归零和双极性不归零 波形的特点 掌握利用matlab产生数字基带信号的方法 二 实验任务 产生1000个随机信号序列 分别用单极性归零 单极性不归零 双极性归零和双极性不归零码
  • javascript中关键字in以及循环for...in的使用和注意事项

    写这篇文章 是因为在学习prototypejs库中方法Object extend 和Class create 看这篇指导 tutorial on classes and inheritance 的时候 对于什么能够继承 什么不能继承产生了一
  • 在ubuntu下搭建Qt Creator的arm交叉编译环境

    Qt Creator是跨平台的 Qt IDE Qt Creator 是 Qt 被 Nokia 收购后推出的一款新的轻量级集成开发环境 IDE 此 IDE 能够跨平台运行 支持的系统包括 Linux 32 位及 64 位 Mac OS X 以