Windows Go环境-to.exe


提示

文章目录


一、Go-语言环境基础配置

访问Go官方:https://go.dev

下载 .msi 安装包(如 go1.23.1.windows-amd64.msi)

双击运行,完成后打开命令提示符(CMD)或 PowerShell

python 复制代码
go version


设置 GOPROXY 使用国内镜像

python 复制代码
# 设置 GOPROXY 使用国内镜像
go env -w GOPROXY=https://goproxy.cn,direct
# 或者使用七牛云的代理
go env -w GOPROXY=https://goproxy.io,direct

二、Go-C 编译器

2.1 C编译安装

项目有cgo依赖(部分功能需调用C库),必须安装,

为CGO提供C语言编译能力,必须与Go架构匹配(64位Go配64位GCC)。

Windows: 安装
MinGW-w64 官网https://www.mingw-w64.org/

或更集成的 MSYS2官网https://www.msys2.org/

MSYS2安装如下:


打开msys2.exe安装

python 复制代码
# MSYS2 的包管理器 pacman 来安装一个特定版本的 GCC 编译器
# 执行安装
$ pacman -S mingw-w64-ucrt-x86_64-gcc

验证

python 复制代码
gcc --version

安装项目C库

在MSYS2 UCRT64终端执行,标准库(如LAME):

python 复制代码
 pacman -S mingw-w64-ucrt-x86_64-lame

2.2 CGO与系统依赖简介

当你的Go项目需要调用成熟的C语言库(如音频处理的LAME、图像处理的OpenCV等)时,就会用到CGO。这是Go与原生系统生态桥梁,也是配置复杂性的主要来源

CGO是Go语言提供的一个工具,它允许在Go源代码中直接编写C代码或调用外部的C语言动态/静态库。命令 cgo 在编译前会处理这些特殊部分,生成可供Go编译器理解的中间文件。

三、Go-配置编译

开 Windows PowerShell,导航到你的项目目录,一次性执行以下命令

python 复制代码
# 1. 启用CGO
$env:CGO_ENABLED = "1"
# 2. 指定C编译器路径
$env:CC = "E:\msys64\ucrt64\bin\gcc.exe"
# 3. 将编译器路径临时添加到系统PATH,确保找到所有依赖DLL
$env:Path = "E:\msys64\ucrt64\bin;" + $env:Path
# 4 这一步会移除旧依赖,添加新依赖。更新 go.mod 和 go.sum 文件
go mod tidy
# 5. 编译项目
go build -o xiangmu.exe

go mod tidy 是 Go 模块系统的"管家",它确保你的项目依赖声明(go.mod) 与项目代码实际使用情况以及依赖的校验和(go.sum) 三者保持绝对同步。在修改代码或初始拉取项目后,先运行 go mod tidy 是一个必须养成的好习惯.

python 复制代码
# 方法1:使用 go env 命令(最推荐,查看Go工具链使用的值)
go env CC
go env CGO_ENABLED

# 方法2:查看操作系统的环境变量
echo $env:CC
echo $env:CGO_ENABLED
相关推荐
LDR00613 天前
Type-C 快充全面升级!LDR6601 赋能个人护理便携电机,重塑剃须刀 / 理发器新体验
c语言·开发语言
雪碧聊技术13 天前
Tree.js是什么?一文讲透
开发语言·javascript·ecmascript
码云数智-园园13 天前
C++20 Modules 模块详解
java·开发语言·spring
swordbob13 天前
NIO的channel中什么是 fd(File Descriptor,文件描述符)
java·开发语言·nio
源分享13 天前
Java线程同步的多种实现方法(非常详细)
java·开发语言·jvm
Luminous.13 天前
C语言--day30
c语言·开发语言
何以解忧,唯有..13 天前
Go语言循环语句详解:for、range与循环控制
开发语言·算法·golang
謓泽13 天前
C语言不是语法,是通往机器的地图。
c语言·开发语言
云水一下13 天前
从零开始学 PHP 系列(一):PHP 的前世今生与开发环境搭建
开发语言·php
飞天狗11113 天前
零基础JavaWeb入门——第五课第二小节:九大内置对象 · 第2个:response(响应对象)
java·开发语言