go语言多版本管理
正常来说,自己开发的话安装一个最新的就行,各方面体验最佳。
但是客户需求是千奇百怪的, 比如我这个项目,需要在win7上运行,而且还是32位的。具体版本是: win7 sp1
我当前版本安装的是1.22.5, 算是新的了, 用命令打包成x86版本的exe应用,传到服务器却是不能成功运行。
报错提示:
C:\Users\cdfy\Desktop>server_win.exe
Exception 0xc0000005 0x8 0x0 0x0
PC=0x0
runtime.asmstdcall(0x20)
C:/Program Files (x86)/Go/src/runtime/sys_windows_386.s:44 +0x2a fp=0x1c
f8e8 sp=0x1cf8e4 pc=0x37d87a
eax 0x8
ebx 0x1063150
ecx 0x0
edx 0x1cf918
edi 0x1cf8ec
esi 0x1cf94c
ebp 0x1cf8ec
esp 0x1cf8e0
eip 0x0
eflags 0x10206
cs 0x1b
fs 0x3b
gs 0x0
搜索了下,原来go 1.20是最后一个支持win7的版本,后面都不支持了。
那么现在就涉及到一个多版本装在同一个window系统中,百度搜索了下,使用了g这个多版本管理工具,还是挺好使得,这里记录下安装过程:
- 直接在开源站点上下载g这个工具,github地址
- 新增
G_HOME环境变量,指向解压根目录 - 新增
G_MIRROR环境变量,指向国内go下载的镜像地址 - 新增
GOPATH环境变量,指向go项目的根目录,也就是bin, pkg, src目录 - 新增
GOPROXY环境变量, 指向https://goproxy.cn,direct - 【已安装过go操作】移除并替换原有go的path 环境变量配置,
go/pathto/bin,更新为%USERPROFILE%\.g\go\bin - 【已安装过go操作】移除并替换原有的
GOROOT环境变量配置,更新为%USERPROFILE%\.g\go
然后重新打开命令窗口即可使用了,还是挺方便的。
一些常用命令:
g ls查看当前安装的版本g use 1.20切换为1.20使用g install 1.20安装1.20版本的gog uninstall 1.20卸载1.20的版本
安装完成后,使用上诉命令重新打包后,可以正常在32位win7中运行,nice。
附录
这里备注v1.20版本的几个适配的依赖版本,直接安装最新版会提示不兼容
1
2
3
4
5
go install -v golang.org/x/tools/cmd/goimports@v0.21.0
go install -v golang.org/x/tools/gopls@v0.15.3
go install -v github.com/go-delve/delve/cmd/dlv@v1.21.0
This post is licensed under
CC BY 4.0
by the author.