为了编译公司的ios端的一个sdk,需要在我的mac上下载公司的go项目源码和搭建相关开发环境。但是在初期就遇到了一些问题。这里记录一下。
我安装golang是使用命令行安装,命令网上搜的,运行go env也没有问题,go get等命令也能正常执行。公司源码项目的编译是执行make 命令,因为目录下有对应的makefile文件。但是编译后报错,内容如下:
cd proto; protoc --gogofaster_out=. *.proto -I . -I /Users/biaohu/go/pkg/mod/github.com/gogo/protobuf@v1.3.1/protobuf -I /Users/biaohu/go/pkg/mod/github.com/gogo/protobuf@v1.3.1
protoc-gen-gogofaster: program not found or is not executable
Please specify a program using absolute path or make sure the program is available in your PATH system variable
--gogofaster_out: protoc-gen-gogofaster: Plugin failed with status code 1.
make: *** [proto/common.pb.go] Error 1
看意思是 缺少protoc一些项目什么的,在百度和谷歌搜索了很久,并没有找到符合的问题。在同事帮助下折腾了很久,明明安装了protoc的一系列工具,包括这个googfasteer,而且在相应目录下也找到了工程,但是最后还是报这个错误。我甚至还卸载了go,删除了关于go的所有目录,并按照官网教程重新安装,但是最后还是报这个错误。
最后解决了问题,在profile文件中配置了golang和protoc的环境变量,之前并没有完整的在profile文件中设置golang的环境变量,因为看到go env和go get命令是正常的,所以没有在乎。而protoc的一些环境变量是依赖于golang的路径和环境变量的,所以最好要在profile文件里正确的配置gpolang和protoc的环境变量。
我是在Users/biaohu/.bash_profile文件里设置的,这个跟每个人各自的电脑环境有关系,添加内容如下:
# Golang 环境变量
#export GOROOT=/usr/local/go
#export GOPATH=/Users/biaohu/go
#export GOBIN=$GOROOT/bin
#export PATH=$PATH:$GOBIN
# Protoc环境变量
export PROTOBUF=/usr/local/protobuf
export PATH=$PROTOBUF/bin:$PATH
export PATH=$PATH:$GOPATH/bin
source之后,关闭终端再打开,重新在项目里make,没有之前的问题了,屏蔽glolang环境变量,重新打开终端,make clean,就出现了之前的问题。至此,问题解决。