STM32 使用gcc编译介绍


前言

我们在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编译工具链下载地址

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值