copying …: open /usr/local/go/pkg/darwin_amd64/runtime/cgo.a: permission denied

小白,Macos下Goland-go build配置运行项目,发生如下错误:

GOROOT=/usr/local/go #gosetup
GOPATH=/Users/zhaoheng/GO #gosetup
/usr/local/go/bin/go build -i -o /Users/xxx/Desktop/work/go/xxx/bin/test/run_test xxx/cmd/test #gosetup
go build runtime/cgo: copying /Users/xxx/Library/Caches/go-build/c9/c98ec99950f6a719f87ae12ba24830893366a8e8b6fde1fe2e8cf8721f80e922-d: open /usr/local/go/pkg/darwin_amd64/runtime/cgo.a: permission denied

Compilation finished with exit code 1

处理过程记录:

  • 同样的go build配置,调试状态启动正常。直接命令行go build,go run可以正常启动
  • 在网络上找到的大概有三条,
  1. 目录权限问题,给日志中的路径加权限,eg:sudo chmod -R 777 xxx ###无效
  2. 取消go build配置中的 Run with Sudo ###无效
  3. 禁用CGO,添加环境变量 export CGO_ENABLED=0 ###无效
  • 思考下:
           既不是权限问题,不是cgo问题,debug又能正常启动,那就只剩下一种可能,run和debug的启动参数不同,于是注意到日志中有 /usr/local/go/bin/go build -i -o 两个运行参数。-o不提,go help build
    得到:

    The -i flag installs the packages that are dependencies of the target.

    安装作为目标依赖项的包。再根据日志基本确定是从系统目录拷贝cgo.a到运行时产生的中间目录时权限不足导致的。

解决:

  • 取消掉go build -i
    copying …: open /usr/local/go/pkg/darwin_amd64/runtime/cgo.a: permission denied_第1张图片

你可能感兴趣的:(环境,golang,go,golang)