繁体   English   中英

如何使用 GHC/stack 在 macOS 上创建本机 ARM 可执行文件

[英]How to create native ARM executables on macOS using GHC/stack

GHC 现在( 自 8.10.5 起)支持在 macOS 上生成 ARM 代码。

我需要使用 GHC 或 Stack 中的哪些标志或选项才能生成 ARM 可执行文件?

上下文:我有一台 Apple Silicon Mac。 它可以通过 Rosetta 运行x86_64代码,但也可以运行本机 ARM 代码。

我将避免讨论交叉编译,因为我认为没有必要。

对于 GHC 9.2 以下的版本,您需要在ghc-options中传递-fllvm 这是因为 GHC 还没有包含 M1 的本机代码生成器。 Stack 指南中有一节是关于使用 ghc-options 的 你可以全局设置,也可以设置为更窄的scope。你可以在你的项目中尝试stack repl --resolver lts-19.1 --ghc-options -fllvm看看它的依赖是否兼容GHC 9.0.2,这就是 LTS 19.1 使用的。

对于 GHC 9.2+ 版本,GHC 有一个本地代码生成器,因此它可以在没有 LLVM 的情况下为 M1 编译。 这应该可以正常工作,不需要传递任何特殊ghc-options

确保您使用的是 Stack v2.7.5+,因为此版本添加了对在 macOS aarch64(M1 就是这样)上安装 GHC 的支持。 请参阅变更日志 您可以使用stack upgrade升级 Stack。

Stack v2.7.5 尚未在 GHC 9.0 以上的版本中进行过测试,因此如果您选择使用 GHC 9.2+,则可能需要使用 Cabal。 看到这个片段:

$ stack repl --compiler ghc-9.2.2
Stack has not been tested with GHC versions above 9.0, and using 9.2.2, this may fail

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM