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

能否在Linux环境下交叉编译Haskell程序适配Windows平台?

Linux交叉编译Haskell程序到Windows的可行方案

完全可以在Linux上交叉编译出能直接在Windows运行的Haskell可执行文件,以下是具体操作步骤和注意事项:

  • 安装Windows交叉编译工具链
    GHCup支持安装针对Windows的交叉编译版本GHC,先确认可用的目标架构:

    ghcup list ghc
    

    找到对应Windows的目标(如x86_64-w64-mingw32),安装并设置为该目标的默认编译器:

    ghcup install ghc --target x86_64-w64-mingw32
    ghcup set ghc --target x86_64-w64-mingw32
    

    同时需要安装系统级的mingw交叉编译依赖,以Debian/Ubuntu为例:

    sudo apt install gcc-mingw-w64-x86-64 libc6-dev-i386-cross
    
  • 用Cabal交叉编译项目
    可通过命令行参数直接指定交叉编译器:

    cabal build --compiler=ghc-x86_64-w64-mingw32
    

    也可以在项目根目录创建cabal.project文件,配置默认交叉编译目标:

    package *
      compiler: ghc-x86_64-w64-mingw32
    

    之后直接运行cabal build即可。

  • 处理System.Console.ANSI的兼容性
    该库已原生支持Windows平台,交叉编译时会自动适配Windows终端API,无需修改现有代码。建议确保依赖的ansi-terminal(System.Console.ANSI所属包)版本为最新,避免旧版本兼容性问题。

  • 生成独立可执行文件
    为让Windows端无需额外依赖即可运行,需编译静态链接的可执行文件。在Cabal命令中添加静态链接参数:

    cabal build --compiler=ghc-x86_64-w64-mingw32 --enable-executable-static
    

    或者在.cabal项目文件的可执行项中添加:

    executable your-program-name
      ...
      executable-static: True
    
  • 验证编译产物
    编译完成后,.exe格式的可执行文件会生成在dist-newstyle/build/x86_64-w64-mingw32/下的对应子目录中。用file命令确认其格式:

    file path/to/your-program.exe
    

    输出应显示为PE32+ executable (console) x86-64, for MS Windows类内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 10:11:07