STM32 使用gcc编译介绍

文章目录

  • 前言
  • 1. keil5下的默认编译工具链用的是哪个
  • 2. Arm编译工具链和GCC编译工具链有什么区别吗?
  • 3. Gcc交叉编译工具链的命名规范
  • 4. 怎么下载gcc-arm编译工具链
  • 参考资料


前言

我们在STM32上进行开发时,一般都是基于Keil5进行编译下载,Keil5中默认集成了arm的编译工具链。

这种方式的优点是简单方便,但是相对应的不够灵活。例如我们在实际开发过程中
经常一套代码需要在不同的RTOS和硬件平台上运行,为了更好的维护这套代码,我们一般会对RTOS和硬件驱动进行抽象,不同的RTOS和硬件平台分别是实现这些抽象。

然后通过编译时传入不同参数来确定最终要使用的RTOS和硬件平台。这种情况如果利用Keil5去直接编译就比较麻烦,因此我们需要借助makefile去组织和管理代码。这个时候就要用到另外一种编译工具链gcc了。

本文主要介绍如何使用gcc通过makefile去管理和构建项目。

1. keil5下的默认编译工具链用的是哪个

在这里插入图片描述

KEIL -> Project -> Manage -> Manage Project Items -> Folders/Extensions
目录下查找,我们默认用的应该是这个ARMCC。

另外我们可以通过勾选“User Gcc Compiler for ARM ”旁边的按钮,选中使用gcc进行编译,后面有个Folder是Gcc编译工具链的目录。默认情况下这个目录是不具有我们所需的编译工具链的,因此此时需要我们去网上下载Gcc编译工具链,然后替换成下载后的编译工具链所在的目录再进行编译。

2. Arm编译工具链和GCC编译工具链有什么区别吗?

ARM编译工具链和GCC编译工具链都是常用的编译工具链,用于将源代码编译成目标可执行文件或库。它们之间的主要区别在于以下几点:

支持架构:

ARM编译工具链专门针对ARM架构的处理器进行优化,提供了针对ARM架构的特定优化选项,以实现更好的性能。
GCC编译工具链是一个开源的通用编译工具链,支持多种架构,包括ARM、x86、MIPS等,因此不像ARM编译工具链那样可以提供特定于ARM架构的优化。

授权和商业支持:

ARM编译工具链通常由ARM公司提供,可能需要购买授权才能使用,同时提供相应的商业支持。
GCC编译工具链是开源免费的,可以自由使用和分发,但可能缺乏官方的商业支持,依赖于社区及第三方提供的支持。

优化和性能:

由于ARM编译工具链专门针对ARM架构进行优化,因此在编译ARM架构的代码时可能会实现更好的性能。
GCC编译工具链虽然功能强大且支持多种架构,但在特定架构上的优化可能没有ARM编译工具链那么精确。

工具版本和更新:

ARM编译工具链可能会更紧密地与ARM架构的最新特性和指令集保持同步,从而在新一代ARM处理器上获得更好的性能。
GCC编译工具链由于是开源项目,更新和版本发布可能相对较慢,不一定能够及时支持最新的ARM架构特性。

总的来说,选择使用ARM编译工具链还是GCC编译工具链取决于具体应用场景和需求。如果项目主要面向ARM架构,并追求更好的性能和支持,则ARM编译工具链可能是一个更好的选择;而如果需要跨多个架构或对成本和开放性有更高要求,GCC编译工具链可能更适合。

3. Gcc交叉编译工具链的命名规范

命令规范

arch [-vendor] [-os] [-(gnu)eabi]

arch : 架构的意思,如ARM ,MIPS

vendor: 工具链的提供厂商

os: 支持的操作系统

eabi:嵌入式应用二进制接口(Embedded Application Binary Interface)
abi:	计算机上的

arm gcc还分为是否支持操作系统

  • 支持操作系统:
    arm-none-linux-gnueabi
    主要用于基于ARM架构的Linux系统,可用于编译 ARM 架构的 u-boot、Linux内核、linux应用等。基于GCC,使用Glibc库,经过 Codesourcery 公司优化过推出的编译器。

  • 不支持操作系统
    arm-none-eabi-gcc
    用于编译 ARM 架构的裸机系统(包括 ARM Linux 的 boot、kernel,不适用编译 Linux 应用 Application),一般适合 ARM7、Cortex-M 和 Cortex-R 内核的芯片使用,所以不支持那些跟操作系统关系密切的函数。

4. 怎么下载gcc-arm编译工具链

下载地址
在这里插入图片描述
我们用的是Linux的虚拟机,所以需要下载基于Linux的gcc-arm-none-eabi工具链。
但是上方有两个不同架构平台的,分别是x86_64和aarch64。
可以通过在linux虚拟机上执行

 	uname -m 

来确定当前使用的是什么架构,并下载对应架构的编译工具链。

参考资料

Windows中使用GCC编译STM32CubeMx生成的Makefile文件

arm 交叉编译器各种gcc 傻傻分不清楚:gnueabi,gnueabhf,none-eaib

深入理解工具链-自己搭建STM32编程IDE

arm-gnu编译工具链下载地址

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/491680.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C++STL学习之unordered_map与unordered_set(底层Hash)

前言:我们前面已经学习论map和set,现在又冒出来一个unordered_map和unordered_set,这两个有啥差别吗?前面我们已经说过,map和set的底层是红黑树,那unordered_map和unordered_set的底层是什么呢?…

2024 解决 Failed to launch process [ElasticSearch]

操作系统:centos 7 (x86) sonarQube不能使⽤root账号进⾏启动,所以需要创建普通⽤户及其⽤户组 一、问题描述:使用root启动时,一直反馈 SonarQube is not running 问题原因:不能够使用root用户进行启动 解决方案…

Python(Socket) +Unreal(HTTP)

Python(Socket) Unreal(HTTP) python(Socket):UE:Post请求并发送本机IP 上班咯,好久没记笔记了。。。 局域网 UE的apk,请求Python的Socket 跑起Socket ,UE发 …

【Python机器学习系列】sklearn机器学习模型的保存---joblib法

这是我的第247篇原创文章。 一、引言 joblib包是由scikit-learn外带的,是一个用于将Python对象序列化为磁盘文件的库,专门用于大型数组,常用于保存机器学习模型。它可以高效地处理大型数据集和模型。对于大数据和大型机器学习模型&#xff0…

JavaScript高级(一)--V8引擎上

浏览器渲染的原理 主流浏览器及其内核 内核浏览器css前缀备注TridentIE4-IE11-ms最新的Edge已转向BlinkGecko火狐浏览器-mozWebkitsafari、旧版谷歌-webkitBlinkGoogle Chrome-webkitPrestoopera-o现在的opera转向了Blink 我们常说的浏览器内核指的就是浏览器的排版引擎&…

【No.20】蓝桥杯简单数论下|寻找整数|素数的判断|笨小猴|最大最小公倍数|素数筛|埃氏筛|欧氏线性筛|质数|分解质因子(C++)

寻找整数 【题目描述】 有一个不超过 1 0 1 7 10^17 1017的正整数n,知道这个数除以2至49后的余数如下表所示,求这个正整数最小是多少 解法一:模拟 暴力法:一个个检验 1 … 1 0 17 1\dots 10^{17} 1…1017的每个数 由于这个数n…

证券公司数据摆渡,如何兼顾安全性、可控性和效率?

根据国家和金融行业的法律法规要求,我国的证券公司不少采用网络隔离的方式将内部网络隔离为操作内网和操作外网,但网络隔离后,证券公司的操作内外网间仍需要进行数据交换,如提数、与第三方合作机构的数据外发和收取等业务需求&…

【AI绘画/作图】风景背景类关键词模板参考

因为ds官网被墙,所以翻了IDE的源码整理了下stablestudio里的官方模板,顺便每个模板生成了一份…不知道怎么写关键词的可以参考 Stunning sunset over a futuristic city, with towering skyscrapers and flying vehicles, golden hour lighting and dramatic cloud…

MySQL数据库的高级SQL语句与高级操作(1)

目录 以下例子都是基于该数据表 1、查询不重复记录(distinct) 2、and 、or:根据多条件查询 3、IN ----显示已知的值的数据记录 4、BETWEEN ----显示两个值范围内的数据记录 5、 like通配符:模糊查询 6、order by&#xff1a…

vlan、三层交换机、网关、DNS、子网掩码、MAC地址详解

vlan、三层交换机、网关、DNS、子网掩码、MAC地址详解 一、 什么是VLAN? VLAN中文是“虚拟局域网”。 ​ LAN可以是由少数几台家用计算机构成的网络,也可以是数以百计的计算机构成的企业网络。 ​ VLAN所指的LAN特指使用路由器分割的网络——也就是广…

【数字图像处理】改变图像灰度级别

改变图像灰度级别 首先,对原始图像 O O O进行灰度级量化: q int ⁡ ( O 2 i ) 2 i , q\operatorname{int}\left(\frac{O}{2^{i}}\right) \times 2^{i}, qint(2iO​)2i, 灰度级别256,128,64,32,16,8&…

FastAPI+React全栈开发08 安装MongoDB

Chapter02 Setting Up the Document Store with MongoDB 08 Installing MongoDB and friends FastAPIReact全栈开发08 安装MongoDB The MongoDB ecosystem is composed of different pieces of software, and I remember that when I was starting to play with it, there w…

QT_day5:使用定时器实现闹钟

1、 程序代码&#xff1a; widget.h&#xff1a; #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTime>//时间类 #include <QTimer>//时间事件类 #include <QTextToSpeech>//文本转语音类 QT_BEGIN_NAMESPACE namespace Ui { cla…

深度学习十大算法之图神经网络(GNN)

一、图神经网络的基础 图的基本概念 图是数学中的一个基本概念&#xff0c;用于表示事物间复杂的关系。在图论中&#xff0c;图通常被定义为一组节点&#xff08;或称为顶点&#xff09;以及连接这些节点的边。每个边可以有方向&#xff0c;称为有向边&#xff0c;或者没有方向…

C#学习笔记4:PC串口发送数据

今日继续我的C#学习之路&#xff0c;今日学习制作PC串口发送数据的窗口程序 串口是单片机上位机开发的重点&#xff0c;本文围绕做一个通过PC端串口发送数据的程序进行实践学习&#xff0c; 文章提供源码与解释、整体工程文件 目录 1、控件的选择与摆放&#xff1a; 2、程序设…

46 div 下面包含 el-radio, 导致点击一次 div, div 的 click 事件执行多次

前言 这是一个最近碰到的一个很奇怪的问题 情况如下一个 div 下面有一个 el-radio, 然后 div 上面配置了 click 的回调为 handleClick 然后 但是点击 div 的时候, handleClick 触发了两次 然后 这里 来模拟一下, 并解决一下 这个问题 这里的知识主要是 设计到 label 和 …

pytorch反向传播算法

目录 1. 链式法则复习2. 多输出感知机3. 多层感知机4. 多层感知机梯度推导5. 反向传播的总结 1. 链式法则复习 2. 多输出感知机 3. 多层感知机 如图&#xff1a; 4. 多层感知机梯度推导 简化式子把( O k O_k Ok​ - t k t_k tk​) O k O_k Ok​(1 - O k O_k Ok​)起个别名…

09-LearnTheArchitecture-MemoryManagement

快速链接: 【精选】ARMv8/ARMv9架构入门到精通-[目录] &#x1f448;&#x1f448;&#x1f448; 1 Overview 本文介绍了 Armv8-A 中的内存转换&#xff0c;这是内存管理的关键。 它解释了虚拟地址如何转换为物理地址、转换表格式以及软件如何管理Translation Lookaside Buffe…

阿里云对象存储OSS入门

阅读目录 一、阿里云OSS的使用 1、OSS是什么&#xff1f;2、OSS的使用 二、阿里云OSS的使用三、图床的搭建四&#xff1a;图床绑定阿里云OSS 编写不易&#xff0c;如果我的文章对你有帮助的话&#xff0c;麻烦小伙伴还帮忙点个赞再走&#xff01; 如果有小伙伴觉得写的啰嗦&a…

【倪琴仲尼式-雷伴】全新倪诗韵精品杉木古琴

试音中的用弦&#xff1a;梦音&#xff0c;视频录音无任何处理&#xff0c;所见即所得。 现琴比照片更好看。倪琴吊牌、琴额后面的编码和倪琴官网上的序列号是一一对应的&#xff0c;可查。 雷伴&#xff0c;“伴”字取意陪伴、相伴、依随。栗壳色&#xff0c;纯鹿角霜生漆工艺…