You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

macOS下构建Haskell可执行文件如何指定部署目标版本

macOS下Haskell工具链指定部署目标的配置方法

以下方案均等效于Clang的-mmacosx-version-min编译参数,可自定义二进制的LC_BUILD_VERSION minos值,兼容旧版本macOS系统。


通用方案(适用于GHC/Cabal/Stack所有工具链)

优先推荐使用环境变量配置,无需修改项目文件,全局生效:

  • 构建前执行命令设置目标版本,示例为设置最低兼容10.15版本:
    export MACOSX_DEPLOYMENT_TARGET=10.15
    
    该变量会被GHC底层的编译、链接环节自动识别,自动传递对应参数给Clang编译器和链接器。

各工具单独配置方案

如果不需要全局生效,可按工具单独配置:

Cabal配置

  1. 单次构建临时生效:
    执行构建命令时传入对应参数:
cabal build --ghc-option="-optc-mmaccosx-version-min=10.15" --ghc-option="-optl-mmaccosx-version-min=10.15"
  1. 项目级永久生效:
    在项目根目录的cabal.project文件中添加如下配置:
package *
  ghc-options: -optc-mmaccosx-version-min=10.15 -optl-mmaccosx-version-min=10.15

Stack配置

  1. 单次构建临时生效:
    执行构建命令时传入对应参数:
stack build --ghc-options="-optc-mmaccosx-version-min=10.15 -optl-mmaccosx-version-min=10.15"
  1. 项目级永久生效:
    在项目根目录的stack.yaml文件中添加如下配置:
ghc-options:
  "$everything": -optc-mmaccosx-version-min=10.15 -optl-mmaccosx-version-min=10.15

直接调用GHC时配置

如果手动调用GHC编译单个文件,直接传入参数即可:

ghc Main.hs -optc-mmaccosx-version-min=10.15 -optl-mmaccosx-version-min=10.15

验证配置生效

构建前先清空原有构建缓存避免旧文件干扰:

  • Cabal执行cabal clean
  • Stack执行stack clean
    重新构建完成后执行以下命令验证minos值是否符合预期:
otool -l ./lamdu | grep minos

内容的提问来源于stack exchange,提问作者yairchu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 06:15:02