解决Mac m1环境下Go debug问题

idea can not run under Rosetta

Posted by 大攀 on Saturday, April 16, 2022

TOC

故事背景

今天得到一台Mac M1芯片的开发机,以前就对M1的兼容性略有耳闻,但好在有Rosetta 的存在,在安装常用工具软件的过程中,并没有遇到’阻塞性’问题。

在我使用 Goland Run 项目的时候,项目可以正常启动,没有任何问题,但是,当我 Debug 项目时,问题却出现了:

error:could not launch process: can not run under Rosetta, check that the installed build of Go is right for your CPU architecture

解决过程

  1. 百度一下,想着快速解决,发现 别说解决方案了,连相似的问题都几乎没有;
  2. 还是得上Google,哦豁,发现两个已经Closed issue,应该很快就可以了吧;
  3. 怎么大家还都在讨论呢,甚至发现最近还有人回复:”the issue still exist”;
  4. 不是吧。。看看可能的原因吧;
  5. 接下来就被带到dlv的坑里了;
  6. 更新最新的dlv, ensure that the tools, Delve and GDlv, are built and installed using the M1 version of Go.
    1. go install github.com/go-delve/delve/cmd/dlv@latest
    2. go install github.com/aarzilli/gdlv@latest
  7. 还是不行!更新Go版本到最新的吧,1.18, Debug 冲! 还是失败了;
  8. … 安装尝试各种版本,尝试版本对齐 …
  9. 嘶..这可如何是好。这时 被重启了N次GoLand在左下角弹出一个⚠️框,内容大概是:安装apple芯片的版本,可以发挥其最佳性能;
  10. 难道这个最佳性能,指的是最基础的功能补全??我’被迫’进了其官网,发现还真有一个macOS Apple Silicon这样的独立版本;
  11. 换下GoLand试试吧,done。

解决方法

其实总结下来,只需要两步:

  1. 下载安装 支持ARM架构的 Go 语言版本
    1. Go 在 1.16 版本之后开始支持 macOS ARM64
    2. img.png
  2. 下载安装 Apple Silicon 的 GoLand 版本
    1. img_1.png

comments powered by Disqus