每当我尝试在带有M1芯片的MacBook上使用march=native
编译任何C++程序时,使用clang时会出现以下错误:
clang: error: the clang compiler does not support '-march=native'
不过,它曾经在配备英特尔CPU的较老MacBook上工作,Clang(还)不支持这种架构吗?clang --version
给出:
Apple clang version 12.0.0 (clang-1200.0.32.29)
Target: arm64-apple-darwin20.2.0
5条答案
按热度按时间mrzz3bfm1#
在Apple Clang 13.0.0版本中,
-mcpu=apple-m1
现在可用。ia2d9nvy2#
-mcpu=apple-a14
可能是M1的最佳选择。cngwdvgl3#
据我所知,这不是
Apple M1
特有的,它也会在各种其他架构(主要是各种其他arm处理器)中发生。例如,请参阅此处的错误报告https://github.com/DMOJ/judge-server/issues/303基本上,每一个新架构的clang构建都必须选择为编译器构建的目标提供默认值“march=native”;如果没有,那么你会看到这个错误消息。即使对于那些确实有优化目标的ARM处理器,你也经常不得不特别使用“-MCPU=xxx”而不是“-March”。
例如,对于iPhone,您将使用
-mcpu=apple-a11
-mcpu=apple-a12
等。但是,尚未针对
Apple M1
实现此类目标qv7cva1a4#
在Clang 15中,
-march=native
现在为苹果M1而存在(我个人使用它)。z6psavjg5#
另一种解决方案是用BREW更新Clang
lang:错误:clang编译器不支持“-march=native”
1° -安装llvm conbrew
2° -检查clang版本
结果:
3° -使用新版本修改路径,例如添加到.zshrc