解决 xgo 旧版本无法编译的问题

由于这几天帮一个部门做桌面工具软件需要兼容 win7 (已经2026年了啊!),需要使用go-1.20 (最后一个支持win7的版本),然而使用 xgo 指定使用1.20低版本时遇到了拉取不到镜像的问题。

编译脚本采用以下方式时,提示 techknowlogick/xgo:go-1.20.14 找不到


$XGO_CMD \
  --go go-1.20.14 \
  --targets=windows/386 \
  --dest="$OUTPUT_DIR" \
  --trimpath \
  --ldflags="$LDFLAGS" \
  -buildvcs=false \

经过分析发现,实际上旧版本的镜像在 ghcr.io/techknowlogick/xgo:go-1.20.14 有构建,所有我采取了以下方法预先拉取镜像并改名来兼容:


if [[ "$(docker images -q ghcr.io/techknowlogick/xgo:go-1.20.14 2> /dev/null)" == "" ]]; then
  echo "Image ghcr.io/techknowlogick/xgo:go-1.20.14 not found. Pulling..."
  docker pull techknowlogick/xgo:go-1.20.14
  docker tag techknowlogick/xgo:go-1.20.14 ghcr.io/techknowlogick/xgo:go-1.20.14
else
  echo "Image ghcr.io/techknowlogick/xgo:go-1.20.14 found."
fi

提了个Issues,建议官方对 xgo 使用的 go 版本进行判断,尝试从 ghcr.io/techknowlogick/xgo 直接拉取或分新旧版本进行容错处理。

顺便水一篇


「倘若有所帮助,不妨酌情赞赏!」

Holmesian

感谢您的支持!

使用微信扫描二维码赞赏


相关文章

发表新评论