首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ARM平台是否有通用的工具链/编译器?

ARM平台是否有通用的工具链/编译器?
EN

Unix & Linux用户
提问于 2017-10-23 13:29:41
回答 1查看 91关注 0票数 0

最近,我尝试为arm平台创建自己的交叉编译工具链。我注意到,在GCC的autoconf脚本中,我必须传递以下变量:

代码语言:javascript
复制
--with-cpu=cortex-m4 \
--with-fpu=fpv4-sp-d16 \
--with-float=hard \
--with-mode=thumb \

因此,似乎不同的ARM平台应该有不同的工具链/编译器,因为我必须配置cpu、fpu等,但是我发现这些工具链有一些预先制作的二进制文件。

https://developer.arm.com/open-source/gnu-toolchain/gnu-rm/downloads

我尝试了这个工具链,并编写了一个hello world程序,并在我的目标手臂板上试了一下,然后它显示了“分段错误”。好的,至少它不是“无法执行二进制文件: Exec格式错误”

但我仍然在想,为什么它不起作用?还是应该真的起作用?

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2017-10-23 16:37:26

在构建工具链本身时,必须配置要支持的特性。您可以构建一个“苗条”编译器,只支持您想要的目标所需的特性。

但是,您也可以支持ARM平台提供的一切,并获得一个笨拙的编译器。

对于特性本身,您应该在不同类型之间有所不同:

  • 不需要像-mcpu这样的优化标志,它们只是对某个ARM处理器的代码进行优化
  • 另一方面,您的ARM核心的fpu功能必须可以使用fpu。
  • 您的float=hard依赖于操作系统,而不是处理器:它允许将浮点数传递给浮动寄存器中的函数,这可能是一个很大的加速,因为ARM寄存器和浮动寄存器之间的传输很慢。但就联系而言,该系统需要就这一点达成一致。
  • 拇指的支持在某种程度上也是可选的。如果内核支持它,您可以使用这两种方式,但是现在不让编译器选择拇指模式是很愚蠢的。
票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/399907

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档