Windows系统通过部署wsl + Goland进行跨平台开发

1.背景

近期项目中因为用到了 Golang库中的 "log/syslog" 包,而这个包是禁止在windows平台上编译的.

并且在windows环境上开发也会有诸多不便,如执行makefile文件的make命令,本地开发环境中docker,etcd,redis的搭建等等,而这些通过部署wsl去搭建一个linux环境就很可以很方便的解决了.

2.安装WSL 以及 设置linux用户信息

2.1 wsl 安装

前置条件 : windows10及以上版本

进入windows电脑的powershell界面(以管理员身份运行) , 输入wsl --install命令 , 默认安装的linux发行版是ununtu.

相关命令

wsl --install # 安装命令

wsl --list --online #查看可用发行版列表

wsl --install -d <distroname> #安装一个发行版

2.2 设置linux用户信息

在安装完成之后,系统将会要求为linux创建用户名和密码 , 此用户名密码 和 windows系统中的用户名密码无关,是独立与每个单独安装的linux发行版的. 并且此账户将是发行版的默认用户,可以执行sudo命令.

2.3 忘记密码

在windows的powershell 界面使用 wsl -u root (如下图) , 使用passwd <username> , <username>是linux账户中的用户名 , 想要修改哪个用户就输入相应的用户名. 根据相应的提示输入新密码即可.

2.4 如何进入linux发行版

同样是先打开windows系统的powershell界面 , 然后输入你安装的发行版的名称即可.如,我安装的linux是ubuntu的系统,输入如下图内容即可.

3. Goland + wsl 搭建跨平台开发环境

首先需要进入linux系统 , 去搭建golang的环境. (这个此处就不再介绍了,推荐使用 go语言版本管理工具g , 可以自行google , 或者参考我的博客 , 不过是windows版本的,操作流程类似 Go版本管理工具g的使用(Windows版本)_windows go版本管理工具-CSDN博客)

3.1 方法一 (稍稍占用内存 , 比较麻烦)

在golang界面打开wsl远程链接

选择安装的wsl实列

选择使用的IDE和打开的项目

  • 如果是已经在windows平台上开发过的项目 , 需要将这个项目从windows平台移动到linux服务器上

我这里因为是在linux机器中已经安装过goland了,所以此处显示已经安装. 没有安装过的需要等待加载完成之后,进行安装.也可以通过安装选项,去修改安装方式.

而且因为是在linux机器上安装的goland , 之前安装的哪些插件之类的也都没用办法同步.

3.2 方法二

正常在windows环境下打开golang, 创建项目/打开已有项目,在编辑配置处选择运行环境,让项目运行与使用wsl安装的linux发行版上 , 并且勾选在远程目标上构建

在管理目标处,设置配置信息 , 分别为GoROOT和GOPATH的环境变量的目录(是linux上的,不能选用windows系统路径)

如果项目启动时,需要执行配置文件的路径 , 则在程序实参处配置--conf path 时, 这个path也需要时linux上的路径,因此如果此处配置启动命令,要求需要将指定的配置文件也放在linux的相应目录中

相关推荐
B站计算机毕业设计超人几秒前
计算机毕业设计SpringBoot+Vue.jst房屋租赁系统(源码+LW文档+PPT+讲解)
vue.js·spring boot·后端·eclipse·intellij-idea·mybatis·课程设计
不爱学习的YY酱1 小时前
MusicGPT的本地化部署与远程调用:让你的Windows电脑成为AI音乐工作站
人工智能·windows
m0_748248651 小时前
SpringBoot整合easy-es
spring boot·后端·elasticsearch
一个热爱生活的普通人1 小时前
golang的切片(Slice)底层实现解析
后端·go
红目香薰2 小时前
Trae——慧码速造——完整项目开发体验
后端
致奋斗的我们2 小时前
HAProxy介绍与编译安装
linux·汇编·数据库·mysql·青少年编程·haproxy·openeurler
web150854159352 小时前
超级详细Spring AI运用Ollama大模型
人工智能·windows·spring
waves浪游2 小时前
Linux基本指令(上)
linux·运维·服务器
不确定性确定你我2 小时前
`sh` 与 `bash` 的区别详解
linux·bash·运维开发
Vcats3 小时前
深入浅出:基于SpringBoot和JWT的后端鉴权系统设计与实现
java·spring boot·后端