gpt4 book ai didi

macos - 如何使用 GHC/stack 在 macOS 上创建原生 ARM 可执行文件

转载 作者:行者123 更新时间:2023-12-05 05:56:33 25 4
gpt4 key购买 nike

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

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

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

最佳答案

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

对于GHC 9.2以下的版本,你需要在ghc-options中传递-fllvm。这是因为 GHC 还没有包含 M1 的 native 代码生成器。 Stack 指南有 a section on using ghc-options .您可以全局设置它们,也可以为更窄的范围设置它们。您可以在项目中尝试 stack repl --resolver lts-19.1 --ghc-options -fllvm 以查看其依赖项是否与 LTS 19.1 使用的 GHC 9.0.2 兼容。

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

确保您使用的是 Stack v2.7.5+,因为此版本添加了对在 macOS aarch64(M1 就是这样)上安装 GHC 的支持。参见 the changelog .您可以使用 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

关于macos - 如何使用 GHC/stack 在 macOS 上创建原生 ARM 可执行文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69143043/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com