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

20240926 关于Goland处理wsl-GOROOT原理猜测

GOROOT的原理

go sdk与java jdk类似,是go的编译工具链的集合。

在windows上,我们通过在系统环境变量中添加GOROOT并设置为go sdk地址,使得命令行可以访问到go sdk并执行go test、build等命令,这样设置的变量是全局生效的

而在linux中,我们并没有修改系统环境变量,而是安装go后,将go sdk地址写为GOROOT写在/home/user_name/.bashrc中,并export PATH=$PATH;$GOROOT/bin来调用go sdk,这样设置的变量只在bash中生效(重点来了)

GOPATH已经被弃用,影响不是很大。

问题在哪里?

所以,当Goland调用make时,GOROOT实际上并没有定义,而为了弥补这一点,Goland非常“聪明”地将ide保管的GOROOT、GOPATH加入环境变量发送给make,从而使它能调用go sdk。

这样有什么问题呢?这一套在windows上啥问题也没有,甚至可以支持自定义go sdk版本,但是,聪明的读者可能已经发现,这个GOROOT和make看到的GOROOT根本不是一个东西!!!

我们通过在makefile开头打印GOROOT变量来看一下Goland干了什么好事?
请添加图片描述
请添加图片描述

好家伙,他直接把//wslUbuntu给发了过去,这不是三体人和地球人聊科学吗?make直接看不懂了,直接罢工。

解决办法:有,但是极为丑陋

只说结论的话,确实是有的。
步骤:

  1. 右上角齿轮->Go设置->GOROOT->无SDK
  2. 右上角三个点->编辑配置->取消包含系统变量->添加用户环境变量(GOROOT=“/usr/local/go/bin/”)
  3. 在makefile中添加GOLOCAL=$(GOROOT)/go
  4. 使用GOLOCAL进行GO操作

代价:

  1. 正常wsl开发需要设置Go sdk,这下又要重新设置
  2. 正常终端开发需要用这个makefile的话,又要把makefile改回去

官方赶紧把wsl优化端出来!!!


http://www.kler.cn/news/325229.html

相关文章:

  • Spring Cloud 工程搭建服务注册_服务发现
  • OCR Fusion: EasyOCR/Tesseract/PaddleOCR/TrOCR/GOT
  • 我在 Thoughtworks 被裁前后的经历
  • spark 大表与大表join时的Shuffle机制和过程
  • Python通过Sqlalchemy框架实现增删改查
  • Qt网络编程——QTcpServer和QTcpSocket
  • centos7 semanage 离线安装 SELinux
  • Vue3 + TS 实现同一项目同一链接,pc端打开是web应用,手机打开是H5应用
  • Solidity语言:重点学习Solidity编程语言,这是EVM上最常用的智能合约语言。
  • 关于大模型的10个思考
  • 828华为云征文 | 云服务器Flexus X实例:向量数据库 pgvector 部署,实现向量检索
  • Stable Diffusion零基础学习
  • 基于SpringBoot+Vue+MySQL的体育商城系统
  • Linux,C高级——day4
  • 【AI写作】解释 RESTful API,以及如何使用它构建 web 应用程序。
  • 基于nodejs+vue的水产品销售管理系统
  • 大厂面试真题:G1比CMS好在哪?一定好吗
  • CSR、SSR、SSG
  • 【STM32开发环境搭建】-3-STM32CubeMX Project Manager配置-自动生成一个Keil(MDK-ARM) 5的工程
  • 6.数据结构与算法-线性表的链式表示和实现-单链表
  • wireshark使用要点
  • 【STM32】江科大STM32笔记汇总(已完结)
  • Google BigTable架构详解
  • 无人驾驶车联网5G车载路由器应用
  • C++ 创建型设计模式
  • 怎么获取一个文件夹下的所有文件名?
  • MATLAB读取TIF文件,并可视化
  • 基于SpringBoot+Vue+MySQL的美食点餐管理系统
  • 项目集成SpringSecurity框架
  • Python项目Flask框架整合Redis