为什么 March=native 在 Apple M1 上不起作用?

新手上路,请多包涵

每当我尝试在带有 M1 芯片的 Macbook 上使用 march=native 编译任何 C++ 程序时,使用 clang 时都会出现以下错误:

 clang: error: the clang compiler does not support '-march=native'

但是,它曾经可以在带有 Intel CPU 的旧 Macbook 上工作。铿锵声不支持这种架构(还)?

clang --version 给出:

 Apple clang version 12.0.0 (clang-1200.0.32.29)
Target: arm64-apple-darwin20.2.0

原文由 Momo 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
2 个回答

据我所知,这不是 Apple M1 特定的,它也发生在各种其他架构(主要是各种其他 arm 处理器)的 clang 中。例如,请在此处查看此错误报告 https://github.com/DMOJ/judge-server/issues/303

基本上,新架构的每个 clang 构建都必须选择为编译器构建或不构建的目标提供“march=native”的默认值;如果没有,那么您将看到此错误消息。即使对于那些确实有优化目标的 arm 处理器,您也经常必须专门使用“-mcpu=xxx”而不是“-march”。

例如对于 iphone,您将使用 -mcpu=apple-a11 -mcpu=apple-a12 等。

但是,尚未针对 Apple M1 实施此类目标

原文由 Malcolm MacLeod 发布,翻译遵循 CC BY-SA 4.0 许可协议

在 Apple clang 版本 13.0.0 中, -mcpu=apple-m1 现在可用。

原文由 champagniac 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题