当前位置: 首页 > news >正文

WSL使用指南


GoLand + WSL 使用指南:在 Windows 上高效开发 Go 项目

如果你在 Windows 上使用 GoLand 开发 Go 项目,又想享受 Linux 环境 的开发体验,WSL(Windows Subsystem for Linux) 是最好的选择。
本文将教你如何在 GoLand 中结合 WSL 高效开发、调试和部署 Go 项目。


一、为什么在 GoLand 中使用 WSL

如果你在 Windows 上做 Go 开发,可能遇到过这些问题:

  • Windows 与 Linux 环境不一致,部署时经常报错
  • Docker、Redis、MySQL 等依赖安装麻烦
  • Go 模块在 Windows 上可能存在路径大小写和符号链接问题
  • CI/CD、服务器环境大多基于 Linux

**解决方案:**在 GoLand + WSL 下开发,让你在 Windows 上写代码,但在 Linux 环境 中运行、调试和构建,兼顾了 Windows 的易用性和 Linux 的高性能。


二、安装与配置 WSL

1. 安装 WSL 2

在 PowerShell(管理员)中执行:

wsl --install

安装完成后查看版本:

wsl --list --verbose

示例输出:

  NAME            STATE           VERSION
* Ubuntu-22.04    Running         2

如果是 WSL 1,可升级:

wsl --set-version Ubuntu-22.04 2

2. 安装 Ubuntu 发行版

wsl --install -d Ubuntu-22.04

首次启动会要求设置用户名和密码。


3. 升级软件包

sudo apt update && sudo apt upgrade -y

三、GoLand 配置 WSL

1. 启用 WSL 集成

  1. 打开 GoLandSettings(快捷键 Ctrl + Alt + S

  2. 搜索 “Terminal”

  3. 将 Shell Path 设置为:

    wsl.exe ~
    
  4. 应用并保存

现在在 GoLand 的终端打开时,就会自动进入 WSL 的 Linux 环境。


2. 配置 Go SDK 使用 WSL

  1. 打开 GoLandSettingsGoGOROOT
  2. 点击 Add SDKWSL → 选择 Ubuntu-22.04
  3. GoLand 会自动识别 /usr/local/go/usr/bin/go 里的 Go 版本

建议手动安装 Go/usr/local/go,版本更可控,步骤如下:

wget https://golang.org/dl/go1.24.4.linux-amd64.tar.gz
sudo tar -C /usr/local -xzf go1.24.4.linux-amd64.tar.gz
echo 'export GOROOT=/usr/local/go' >> ~/.bashrc
echo 'export GOPATH=$HOME/go' >> ~/.bashrc
echo 'export PATH=$GOROOT/bin:$GOPATH/bin:$PATH' >> ~/.bashrc
source ~/.bashrc

验证:

go version

3. 配置 Go Modules

在 GoLand 里设置:

Settings → Go → Go Modules → Enable Go Modules

并在 WSL 中设置代理:

go env -w GOPROXY=https://goproxy.cn,direct
go env -w GO111MODULE=on

四、GoLand + WSL 开发 Go 项目

1. 在 WSL 中创建项目

cd ~
mkdir ShifuDev && cd ShifuDev
go mod init github.com/cxz/ShifuDev

然后在 GoLand 打开 /home/cxz/ShifuDev,而不是 Windows 的 C:\Users\...

原因:代码放在 Linux 路径 /home 下,避免跨文件系统访问 /mnt/c 带来的 I/O 性能问题。


2. 安装依赖

go mod tidy

如果依赖下载慢,推荐设置国内镜像:

go env -w GOPROXY=https://proxy.golang.org,direct

3. 运行项目

在 GoLand 终端直接:

go run cmd/server/main.go

或者使用 GoLand Run 配置,选择 WSL 中的 Go SDK。


4. 调试项目

  1. GoLand → RunEdit Configurations
  2. 点击 +Go Build
  3. 使用 WSL Go SDK
  4. 设置可执行文件和工作目录
  5. 点击 Debug 运行

五、GoLand + WSL + Docker

如果你的项目依赖 Docker,推荐使用 Docker Desktop 并开启 WSL 集成:

  1. 打开 Docker DesktopSettingsGeneral
  2. 勾选 Enable WSL 2 integration
  3. Resources → WSL Integration 中选择 Ubuntu-22.04

在 WSL 终端测试:

docker --version
docker info
docker ps

然后在 GoLand 里配置:

Settings → Build, Execution, Deployment → Docker → +

选择 Unix Socket,路径填写:

unix:///var/run/docker.sock

六、性能优化

1. 代码放 Linux 路径

把 Go 项目放在:

/home/cxz/ShifuDev

不要放在:

/mnt/c/Users/cxz/ShifuDev

这样可以显著提高 I/O 性能。


2. 限制 WSL 内存与 CPU

编辑:

C:\Users\<你的用户名>\.wslconfig

写入:

[wsl2]
memory=4GB
processors=4
swap=2GB
localhostForwarding=true

然后重启 WSL:

wsl --shutdown

3. 配置 GoLand 缓存路径

在:

Settings → Appearance & Behavior → System Settings

将缓存目录设置到 Windows SSD,提高索引速度。


七、常见问题解决

1. GoLand 终端打不开 WSL

  • 检查是否安装了 WSL:
wsl --list --verbose
  • 如果没显示 Ubuntu,重新安装:
wsl --install -d Ubuntu-22.04

2. 文件权限报错

如果 GoLand 报 Failed to make ... writable

sudo chown -R $(whoami):$(whoami) /home/cxz/ShifuDev

3. gRPC 或 Protobuf 编译失败

如果 protoc 未安装:

sudo apt install -y protobuf-compiler
protoc --version

并配置 Go 插件:

go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest

4. Docker 无法启动

检查 Docker Desktop 是否开启 WSL 集成

Settings → Resources → WSL Integration

八、总结

功能最佳实践
终端GoLand 设置 wsl.exe ~
Go SDK使用 WSL 中的 Go
项目路径/home,避免 /mnt/c
Docker启用 Docker Desktop WSL 集成
调试使用 GoLand 的 WSL Go SDK
性能优化配置 .wslconfig,减少 I/O
依赖安装在 WSL 内部安装 Go、Protobuf、Docker 等

通过 GoLand + WSL,你可以在 Windows 上获得接近原生 Linux 的开发体验,同时无缝支持 Docker、gRPC、Kubernetes 等现代开发技术。


http://www.xdnf.cn/news/1402039.html

相关文章:

  • STM32 之BMP280的应用--基于RTOS的环境
  • 【MLLM】多模态理解Ovis2.5模型架构和训练流程
  • Codeforces Round 1033 (Div. 2) and CodeNite 2025 vp补题
  • 【自然语言处理与大模型】如何进行大模型多模态微调
  • 互联网大厂Java面试:从基础到微服务的深度解析
  • folium地图不显示加载不出来空白问题解决
  • 将 Logits 得分转换为概率,如何计算
  • 学习嵌入式第四十一天
  • nestjs连接oracle
  • WIFI模块-USB-UART-SDIO
  • Manus AI 与多语言手写识别技术全解析
  • U-Boot移植过程中的关键目录文件解析
  • fastdds qos:LifespanQosPolicy
  • 【C++】类和对象(终章)
  • 第二十六天-待机唤醒实验
  • 信息系统架构
  • v-model ,在 vue3和 vue2中的区别
  • Linux(1)|入门的开始:Linux基本指令
  • 认识Redis
  • IDM手机端,速度能提高6倍!
  • CPU的MBR寄存器和MDR寄存器
  • 联合体和枚举——嵌入式学习笔记
  • Linux IO复用
  • 优选算法:二分查找
  • 数据库攻略:“CMU 15-445”Project0:C++ Primer(2024 Fall)
  • 《Java反射与动态代理:从原理到实践》
  • SpringBoot整合Actuator实现健康检查
  • MIT 6.5840 (Spring, 2024) 通关指南——Lab 1: MapReduce
  • GitHub 热榜项目 - 日榜(2025-08-30)
  • 基于Ubuntu本地GitLab 搭建 Git 服务器