• Go模块编译问题及解决方法


    对如下编译错误:

    go build -o hello main.go

    build command-line-arguments: cannot load google.golang.org/grpc: module google.golang.org/grpc: Get https://proxy.golang.org/google.golang.org/grpc/@v/list: dial tcp 172.217.24.17:443: i/o timeout

     

    有两个解决办法:

    1 代理方式

    即在执行前先设置好环境变量“GOPROXY”和“GO111MODULE”:

    export GO111MODULE=on

    export GOPROXY=https://goproxy.io或者export GOPROXY=https://goproxy.cn

     

    对于1.13及以上版本,可直接如下这样:

    go env -w GOPROXY=https://goproxy.cn,direct

     

    推荐使用七牛云的“goproxy.cn”,因为“goproxy.io”也不一定可用。

    自动下载的包被放在用户的主目录(实为GOPATH目录,可执行“go env|grep GOPATH”确认)下,完整路径为:~/go/pkg/mod,如:

    $ls -l ~/go/pkg/mod

    total 0

    drwxr-xr-x  4 guest  staff  128  2 21 14:11 cache

    drwxr-xr-x  3 guest  staff   96  2 21 14:11 github.com

    drwxr-xr-x  3 guest  staff   96  2 21 14:11 golang.org

    drwxr-xr-x  4 guest  staff  128  2 21 14:11 google.golang.org

     

    如遇到如下错误:

    go: downloading google.golang.org/grpc v1.27.1

    build command-line-arguments: cannot load google.golang.org/grpc: open /Users/guest/go/pkg/mod/cache/download/google.golang.org/grpc/@v/v1.27.1.lock: permission denied

    请在执行时加上“sudo”,比如:

    sudo go build -o hello hello.go

     

    2 使用“go mod”的“replace”命令,将网络路径改成本地路径(当编译环境不能网络自动下载时解决办法),如:

    $cat go.mod

    module hello

     

    go 1.13

     

    require google.golang.org/grpc v1.27.1 // indirect

     

    replace google.golang.org/grpc => /usr/local/go/src/google.golang.org/grpc

     

    注意,replace中的不一定需出现在require中。

  • 相关阅读:
    [NOI2014]动物园 题解(预览)
    CF1200E 题解
    KMP算法略解
    [EER2]谔运算 口胡
    CF504E Misha and LCP on Tree 题解
    长链剖分 解 k级祖先问题
    双哈希模板
    Luogu P5333 [JSOI2019]神经网络
    UOJ449 【集训队作业2018】喂鸽子
    LOJ6503 「雅礼集训 2018 Day4」Magic
  • 原文地址:https://www.cnblogs.com/aquester/p/12341348.html
Copyright © 2020-2023  润新知