【发布时间】:2015-03-10 14:51:24
【问题描述】:
我即将在我的项目中使用 C 为 STM32 处理器上的 Cortex-M 内核开发一些固件,并在网上搜索我发现了很多不同的编译器: Keil、IAR、Linaro、Yagarto 和GNU Tools for ARM Embedded Processors。
我想知道,这些编译器之间有哪些功能差异可能会影响我的选择?例如,作为一个爱好者,我不需要供应商的支持或帮助,目前对代码大小的限制是可以的。此外,易用性也不是主要问题,因为我喜欢学习(目前我已经配置了带有 GNU ARM 的 Keil Lite 和 Eclipse)。
这些编译器之间生成的代码在大小/速度方面是否有很大差异?有对照表吗? (我在网上只找到过时的信息)
【问题讨论】:
-
你主要关心的是学习吗?那你为什么关心编译器的性能呢? Linaro 和 Yagarto 是 gcc 的两个版本(不同的库)。我会选择最后一个one you linked to。速度/尺寸数字始终基于综合基准。获取/制作您的代码并使用不同的编译器进行编译。通常,它们的编码方式将比编译器更能反映结果。即,具有不同“C”实现的相同算法。
-
我主要关心的显然是学习,但要达到性能并不是一件坏事(而且工作很有趣)。但是,我会按照您的建议将相同的代码用于不同的编译器,我会检查哪个我更熟悉。感谢您的评论
-
这个问题在学习环境之外同样有效,所以请不要用“如果你正在学习,你选择哪一个并不重要”来忽略它。我不是在学习,但我的问题非常相似,例如,我想知道商业选项是否在 GNU ARM 工具链上提供显着的性能或代码大小差异。
-
Raisonance AN0052 有一个比较。随着编译器的不断发展,这个问题将包含陈旧的信息(为什么会被忽略)。 GCC 在很多方面都比商业编译器性能接近(或更好)。 “基准测试”有很多不同的方法。
标签: gcc arm stm32 keil cortex-m