如何使用Golang在WSL中开发_Golang WSL环境搭建方法

发布时间 - 2026-01-25 00:00:00    点击率:
WSL中Go开发应使用官方二进制安装并显式配置GOROOT、GOBIN和GOPATH,全部操作须在WSL原生路径(如~/)进行,VS Code需配置为登录交互式shell(-i -l)以正确加载环境。

WSL 中安装 Go 不要用 apt 直接装

WSL 默认源里的 golang 包版本通常严重滞后(比如 Ubuntu 22.04 自带 go 1.18),且不包含 GOROOTGOBIN 的合理默

认值,容易导致 go install 失败或 go mod 行为异常。官方二进制包才是唯一推荐方式。

  • 去 https://www./link/81836b7cd16991abb7febfd7832927fd 下载最新 go1.xx.linux-amd64.tar.gz(WSL2 一般为 x86_64)
  • 解压到 /usr/local
    sudo rm -rf /usr/local/go
    sudo tar -C /usr/local -xzf go1.22.5.linux-amd64.tar.gz
  • /usr/local/go/bin 加入 $PATH(写入 ~/.bashrc~/.zshrc):
    export PATH=$PATH:/usr/local/go/bin
  • 执行 source ~/.bashrc,验证:go version 应输出类似 go version go1.22.5 linux/amd64

GOBIN 和 GOPATH 要显式配置才稳定

WSL 文件系统跨 Windows/Linux 边界时,若依赖默认路径(如 $HOME/go),可能因权限、大小写敏感或缓存问题引发 go install 写入失败或 go mod download 卡住。建议统一指向 WSL 原生路径并显式声明。

  • 创建专用目录:
    mkdir -p ~/go-workspace/bin
  • 在 shell 配置中添加:
    export GOPATH=$HOME/go-workspace
    export GOBIN=$HOME/go-workspace/bin
  • 确保 GOBIN 已在 PATH 前置:
    export PATH=$GOBIN:$PATH
  • 验证:go env GOPATHgo env GOBIN 应返回你设置的路径

VS Code 连接 WSL 后仍提示 “go command not found”

这是 VS Code Remote-WSL 插件加载 shell 环境不完整导致的典型问题——它默认不读取 ~/.bashrc 中的 export,所以 PATH 里没有 go

  • 打开 VS Code 设置(Ctrl+,),搜索 remote.WSL.defaultLinuxShellArgs
  • 将值设为:
    ["-i", "-l"]
    (即以登录交互式 shell 启动)
  • 重启 VS Code 窗口(不是仅重载窗口),再打开一个 .go 文件,状态栏应显示 Go 版本
  • 如果仍不行,检查 VS Code 的集成终端是否也用了 -i -l:设置中搜 terminal.integrated.profiles.linux,确认默认 profile 含 "args": ["-i", "-l"]

Windows 文件系统(/mnt/c/)里不能直接 go run

WSL 访问 /mnt/c/ 下的 Go 项目时,go build 可能报错 exec: "gcc": executable file not found in $PATH,或 go mod 拉包极慢甚至超时。根本原因是 Windows NTFS 文件系统不支持 Unix 权限和符号链接,且 I/O 层有额外转换开销。

  • 所有开发工作必须在 WSL 原生文件系统进行(即 ~/home/xxx/tmp 等路径)
  • 不要用 code /mnt/c/Users/xxx/project 直接打开 Windows 路径;改用 cd ~ && mkdir project && code ./project
  • 若需从 Windows 同步代码,用 rsync 或 Git,而非直接编辑 /mnt/c/ 下文件
  • WSL2 的内存和磁盘性能对原生路径很友好,没必要妥协
WSL 上 Go 开发最常卡住的地方,不是装不上,而是路径混用 + shell 环境加载不全。只要坚持用官方二进制、显式设 GOBIN、所有操作留在 ~/ 下、VS Code 启动带 -i -l,基本不会遇到环境级阻塞。


# linux  # git  # go  # windows  # golang  # ubuntu  # unix  # amd  # 解压  # win  # vs code  # https  # 文件系统  # 加载  # 不要用  # 这是  # 设为  # 不上  # 用了  # 已在  # 不支持  # 自带 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何获取上海专业网站定制建站电话?  iOS中将个别页面强制横屏其他页面竖屏  Midjourney怎么调整光影效果_Midjourney光影调整方法【指南】  教学论文网站制作软件有哪些,写论文用什么软件 ?  Laravel项目如何进行性能优化_Laravel应用性能分析与优化技巧大全  佛山企业网站制作公司有哪些,沟通100网上服务官网?  长沙企业网站制作哪家好,长沙水业集团官方网站?  如何用y主机助手快速搭建网站?  Laravel如何实现全文搜索_Laravel Scout集成Algolia或Meilisearch教程  悟空识字如何进行跟读录音_悟空识字开启麦克风权限与录音  制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?  Laravel如何优化应用性能?(缓存和优化命令)  Laravel怎么连接多个数据库_Laravel多数据库连接配置  图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?  制作公司内部网站有哪些,内网如何建网站?  如何快速选择适合个人网站的云服务器配置?  HTML5空格在Angular项目里怎么处理_Angular中空格的渲染问题【详解】  微博html5版本怎么弄发超话_超话进入入口及发帖格式要求【教程】  Laravel如何使用Contracts(契约)进行编程_Laravel契约接口与依赖反转  UC浏览器如何切换小说阅读源_UC浏览器阅读源切换【方法】  LinuxCD持续部署教程_自动发布与回滚机制  如何在 Pandas 中基于一列条件计算另一列的分组均值  Laravel Asset编译怎么配置_Laravel Vite前端构建工具使用  Laravel如何使用Gate和Policy进行授权?(权限控制)  标题:Vue + Vuex 项目中正确使用 JWT 进行身份认证的实践指南  5种Android数据存储方式汇总  如何用IIS7快速搭建并优化网站站点?  JavaScript如何实现音频处理_Web Audio API如何工作?  javascript中的try catch异常捕获机制用法分析  mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?  Python3.6正式版新特性预览  如何在Windows服务器上快速搭建网站?  教你用AI润色文章,让你的文字表达更专业  焦点电影公司作品,电影焦点结局是什么?  Laravel怎么进行数据库回滚_Laravel Migration数据库版本控制与回滚操作  Laravel如何配置任务调度?(Cron Job示例)  Laravel如何配置和使用缓存?(Redis代码示例)  音乐网站服务器如何优化API响应速度?  JS中页面与页面之间超链接跳转中文乱码问题的解决办法  高端云建站费用究竟需要多少预算?  深圳网站制作平台,深圳市做网站好的公司有哪些?  Python自然语言搜索引擎项目教程_倒排索引查询优化案例  为什么php本地部署后css不生效_静态资源加载失败修复技巧【技巧】  Laravel如何使用Telescope进行调试?(安装和使用教程)  Laravel如何实现数据导出到PDF_Laravel使用snappy生成网页快照PDF【方案】  Laravel Telescope怎么调试_使用Laravel Telescope进行应用监控与调试  Microsoft Edge如何解决网页加载问题 Edge浏览器加载问题修复  如何基于PHP生成高效IDC网络公司建站源码?  bing浏览器学术搜索入口_bing学术文献检索地址  邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?