当前位置: 首页 > 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.dtcms.com/a/358967.html

相关文章:

  • AUTOSAR进阶图解==>AUTOSAR_TR_FrancaIntegration
  • 【超全汇总】MySQL服务启动命令手册(Linux+Windows+macOS)(中)
  • 腾讯云OpenCloudOS 9系统部署OpenTenBase数据库详细教程
  • 轻量xlsx读取库xlsx_drone的编译与测试
  • 关联容器(Associative containers)
  • Windows server 2012安装步骤
  • 为什么要用 Markdown?以及如何使用它
  • 软考备考(5)
  • vite Rendering 10 pagesReferenceError: document is not defined
  • 35.Ansible的yaml语法与playbook的写法
  • Java基础知识(十)
  • 【软考架构】面向服务的体系结构(SOA)深度解析
  • 记IsaacSim中抓取物体的质量物理属性的影响
  • 【智能体】零代码学习 Coze 智能体(2)创建智能体的完整步骤
  • 直线与椭圆相交弦长计算公式
  • K8s服务日志收集方案文档
  • LeetCode 92. 反转链表 II - 算法解析
  • 微服务-ruoyi-cloud部署
  • 《动手学深度学习v2》学习笔记 | 2.3 线性代数
  • 吴恩达机器学习(三)
  • 第7.5节:awk语言 switch 语句
  • 【C++】掌握string类操作:高效处理字符串
  • k230 按键拍照后,将摄像头拍照的1920*1080分辨率的图片以jpg文件格式,保存到板载TF存储卡的指定文件夹目录中
  • MinerU本地化部署
  • Java的Optional实现优雅判空新体验【最佳实践】
  • 做一个实用的节假日工具
  • MQTT 连接建立与断开流程详解(一)
  • sunset: decoy靶场渗透
  • 20250830_Oracle 19c CDB+PDB(QMS)默认表空间、临时表空间、归档日志、闪回恢复区巡检手册
  • day42-Ansible