keil环境下使用的编译器
-
ARMCC,即ARM Compiler 5,虽然是自家开发的编译器,其实是基于gcc开源编译器开发
-
ARMClang,即ARM Compiler 6,基于clang编译器开发
开源编译器
- gcc,性能不及clang,但是使用更加普遍
- clang,clang为编译器的前端,即交互部分,使用的架构为LLVM,通俗说,clang是基于LLVM开发的编译器
编译器的选择
如果编译的程序最终在ARM内核MCU上运行,使用的编译器则是基于gcc开发的交叉编译器,在gcc名称前会有很多前缀,命名规则大体如下:
arch [-vendor] [-os] [-(gnu)eabi]
架构 + 厂商 + 系统 + 嵌入式应用的二进制接口
-
使用vscode搭建STM32的开发环境,所使用的的编译器就是arm-none-eabi-gcc
-
在i.mx6ull编译linux的应用程序,使用的是linaro公司基于gcc开发的,名称为arm-linux-gnueabihf-gcc,如果编译linux kernal、boot等应用程序,则编译器中linux变为none,使用指令查询编译器信息时,会有以下字样提示:
gcc version 4.9.4 (Linaro GCC 4.9-2017.01)
编译器的工具
make
通过makefile来执行编译器指令
CMake
通过CMakeLists.txt文件生成makefile
QMake
QT中专用的工具,根据QT工程构造生成makefile