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

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的相应目录中

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 劳特巴赫ICD调试器CMM调用烧录框架固件研究之C语言版本
  • Android 中使用高德地图实现根据经纬度信息画出轨迹、设置缩放倍数并定位到轨迹路线的方法
  • 浅谈人工智能之基于HTTP方式调用本地QWen OPenAI接口(Java版)
  • Qt_按钮类控件
  • 今日leetcode 349.两个数组的交集
  • Qt 类型选择器和类选择器的区别
  • C++学习笔记(30)
  • 【网络】传输层协议TCP
  • SpringBoot+thymeleaf竞赛报名系统
  • 解决【WVP服务+ZLMediaKit媒体服务】加入海康摄像头后,能发现设备,播放/点播失败,提示推流超时!
  • [机器学习]决策树
  • 24年蓝桥杯及攻防世界赛题-MISC-3
  • Jenkins 构建后操作(Send build artifacts over SSH)
  • Codes 开源研发项目管理平台——敏捷测试管理创新解决方案
  • JS全选反选案例
  • hexo+github搭建个人博客
  • 【知识碎片】第三方登录弹窗效果
  • 8年软件测试工程师感悟——写给还在迷茫中的朋友
  • Docker入门(二) - Dockerfile
  • Go 语言编译器的 //go: 详解
  • Idea+maven+scala构建包并在spark on yarn 运行
  • JavaScript HTML DOM
  • JavaWeb(学习笔记二)
  • Java基本数据类型之Number
  • JS专题之继承
  • mysql innodb 索引使用指南
  • Next.js之基础概念(二)
  • October CMS - 快速入门 9 Images And Galleries
  • ReactNative开发常用的三方模块
  • vue--为什么data属性必须是一个函数
  • 产品三维模型在线预览
  • 干货 | 以太坊Mist负责人教你建立无服务器应用
  • 快速构建spring-cloud+sleuth+rabbit+ zipkin+es+kibana+grafana日志跟踪平台
  • 浅谈Golang中select的用法
  • 深入浏览器事件循环的本质
  • 数组的操作
  • 它承受着该等级不该有的简单, leetcode 564 寻找最近的回文数
  • 我感觉这是史上最牛的防sql注入方法类
  • 我这样减少了26.5M Java内存!
  • 项目管理碎碎念系列之一:干系人管理
  • 小程序开发中的那些坑
  • Prometheus VS InfluxDB
  • raise 与 raise ... from 的区别
  • 曜石科技宣布获得千万级天使轮投资,全方面布局电竞产业链 ...
  • ​低代码平台的核心价值与优势
  • ​力扣解法汇总1802. 有界数组中指定下标处的最大值
  • # Spring Cloud Alibaba Nacos_配置中心与服务发现(四)
  • #laravel 通过手动安装依赖PHPExcel#
  • (+3)1.3敏捷宣言与敏捷过程的特点
  • (1)(1.11) SiK Radio v2(一)
  • (2024,RWKV-5/6,RNN,矩阵值注意力状态,数据依赖线性插值,LoRA,多语言分词器)Eagle 和 Finch
  • (51单片机)第五章-A/D和D/A工作原理-A/D
  • (C)一些题4
  • (ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY)讲解
  • (二)Linux——Linux常用指令