如何在macOS上使用GHC/Stack构建原生ARM可执行文件
Apple Silicon 平台 GHC/Stack 生成ARM原生可执行文件配置指南
前置说明
GHC从8.10.5版本开始支持macOS平台生成ARM架构代码,推荐使用9.2及以上版本,Apple Silicon兼容性更佳。
单独使用GHC配置
- 若你在未开启Rosetta转译的原生终端下安装了ARM版GHC,默认编译时不需要额外参数,自动生成ARM架构可执行文件
- 如需强制指定生成ARM架构,编译时添加
-arch arm64参数即可:ghc -arch arm64 你的源码文件.hs - 若你当前使用的是x86_64版GHC(在Rosetta转译环境下安装),需先切换为原生ARM版GHC,才能编译出ARM架构产物。
使用Stack配置
- 首先确认你安装的Stack为原生ARM版本,可执行
stack --version查看架构信息,若为x86_64版建议卸载后重装ARM版Stack - 全局默认编译ARM架构产物:在用户配置文件
~/.stack/config.yaml中添加如下内容:ghc-options: "*": -arch arm64 architecture: arm64 - 单次项目指定编译ARM架构:执行编译命令时添加对应参数即可:
stack build --arch arm64 - 验证产物架构:编译完成后执行
file 可执行文件路径,输出包含arm64即为原生ARM架构可执行文件。
注意事项
如果项目依赖第三方C库,需要保证对应C库也为ARM架构,否则会出现链接失败的问题。
内容的提问来源于stack exchange,提问作者yairchu
相关产品推荐
相关产品推荐

