簡體   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