门户网站建设创新,网站标题权重,做线上兼职的网站,合肥备案文章目录 前言1. keil5下的默认编译工具链用的是哪个2. Arm编译工具链和GCC编译工具链有什么区别吗#xff1f;3. Gcc交叉编译工具链的命名规范4. 怎么下载gcc-arm编译工具链参考资料 前言
我们在STM32上进行开发时#xff0c;一般都是基于Keil5进行编译下载#xff0c;Kei… 文章目录 前言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 MIPSvendor 工具链的提供厂商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编译工具链下载地址