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

Windows下用Haskell Stack构建Hello-World遇gcc编译错误

解决Windows 11下Stack编译Haskell时GCC失败的问题

以下是针对_fread_nolock_s相关编译错误的具体解决步骤:

  • 确认Visual Studio 2019组件完整
    打开VS Installer,勾选「Desktop development with C++」工作负载,确保包含以下组件:

    • MSVC v142 - VS 2019 C++ x64/x86 build tools
    • 对应Windows 11版本的Windows SDK
    • C++ ATL for latest v142 build tools
      安装完成后重启系统。
  • 强制Stack使用MSVC工具链
    在用户目录(C:\Users\<你的用户名>)下创建或修改stack.yaml全局配置,添加内容:

    compiler: ghc-9.2.7
    setup-info:
      ghc:
        windows:
          x86_64:
            url: "https://downloads.haskell.org/~ghc/9.2.7/ghc-9.2.7-x86_64-unknown-mingw32.tar.xz"
            bindist-type: "mingw"
    system-ghc: false
    msbuild-path: "C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\MSBuild\\Current\\Bin\\MSBuild.exe"
    

    也可以在项目目录的stack.yaml中添加system-ghc: false和指定msbuild-path,仅对当前项目生效。

  • 修复环境变量与头文件冲突

    • 检查系统PATH,确保VS工具链的路径优先级高于其他GCC/MinGW版本,暂时移除冲突的GCC路径后重试。
    • 打开「Developer Command Prompt for VS 2019」,在该命令行窗口中执行stack build,确保使用VS的编译环境。
    • 若仍有头文件问题,在项目stack.yaml中添加指定路径(替换为你实际安装的版本号):
      extra-include-dirs:
        - "C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\VC\\Tools\\MSVC\\14.29.30133\\include"
        - "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt"
      extra-lib-dirs:
        - "C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\VC\\Tools\\MSVC\\14.29.30133\\lib\\x64"
        - "C:\\Program Files (x86)\\Windows Kits\\10\\Lib\\10.0.22621.0\\ucrt\\x64"
      
  • 升级工具版本

    • 执行stack upgrade升级到最新Stack版本,再重新编译项目。
    • 更换GHC resolver版本,比如在项目stack.yaml中设置resolver: lts-20.25(对应GHC 9.2.8,修复部分Windows编译兼容问题),然后执行stack build。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 23:32:43