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

Windows下安装Go的sqlc遇__stack_chk_fail链接错误求助

解决Windows下安装sqlc时__stack_chk_fail未定义的链接错误

问题背景

  • Go版本:go1.22.1 windows/amd64
  • 系统:Windows
    执行安装命令:
go install github.com/sqlc-dev/sqlc/cmd/sqlc@latest

触发链接错误,核心提示为:

C:\Users\aymen\AppData\Local\Temp\go-link-3004266855\000005.o: In function _fingerprintVar': C:/Users/aymen/go/pkg/mod/github.com/pganalyze/pg_query_go/v5@v5.1.0/parser/include/pg_query_fingerprint_defs.c:660: undefined reference to __stack_chk_fail'
...
collect2.exe: error: ld returned 1 exit status

解决方案

方法1:禁用栈保护编译

错误源于GCC栈保护机制相关函数缺失,通过设置环境变量关闭栈保护后重新编译:

CMD环境:

set CGO_CFLAGS=-fno-stack-protector
go install github.com/sqlc-dev/sqlc/cmd/sqlc@latest

PowerShell环境:

$env:CGO_CFLAGS="-fno-stack-protector"
go install github.com/sqlc-dev/sqlc/cmd/sqlc@latest

方法2:修复GCC环境

该问题常因使用的MinGW版本不兼容或缺失组件导致:

  • 卸载现有MinGW,安装MinGW-w64(选择x86_64架构)
  • 将MinGW的bin目录(如C:\mingw64\bin)添加到系统PATH的最前端,避免与其他工具冲突
  • 重启终端后重新执行安装命令

方法3:使用预编译二进制包

若源码编译始终失败,直接使用官方预编译版本:

  • 找到sqlc官方发布的Windows amd64二进制包
  • 解压后将sqlc.exe复制到Go的bin目录(默认路径:C:\Users\<你的用户名>\go\bin)
  • 确保该bin目录在系统PATH中,即可直接使用sqlc命令

内容的提问来源于stack exchange,提问作者Hamdi-BM

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 10:42:03