golang安装
环境centos7.3 ,管理员:root root的home目录:/root
# cat /etc/redhat-release
CentOS Linux release 7.3.1611 (Core)
- 为了使用go mod,选择最新版本1.12
https://studygolang.com/dl
创建个下载目录(下面使用~,主要为了强调是当前用户的home目录下)
mkdir -p ~/downloads
下载源码
cd ~/downloads
wget https://studygolang.com/dl/golang/go1.12.5.linux-amd64.tar.gz
解压到/usr/local/目录下
tar zxvf go1.12.5.linux-amd64.tar.gz -C /usr/local/
创建gopath目录
mkdir -p ~/gopath
mkdir -p ~/gopath/src ~/gopath/pkg ~/gopath/bin
添加环境变量
vim ~/.bashrc
追加
export GO111MODULE=auto
export GOROOT=/usr/local/go
export GOPATH=~/gopath
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
为当前用户添加环境变量。每次启动一个bash终端会为当前用户添加环境变量
source ~/.bashrc
查看是否安装成功
echo $GOROOT
/usr/local/go
echo $GOROOT
/usr/local/go
go version
go version go1.12.5 linux/amd64
至此golang环境就安装成功了
测试
mkdir -p ~/gopath/src/testgo
cd ~/gopath/src/testgo
vim main.go
package main
import (
"fmt"
)
func main(){
fmt.Println("hello world!")
}
执行下
# go run main.go
hello world!
编译安装下我们的代码
# go build
# ls
main.go testgo
执行install,可执行文件会从当前目录移动到~/gopath/bin目录下
# go install
# ls
main.go
# ls ~/gopath/bin/
testgo
然后可以在当前用户级别使用我们的二进制文件
# testgo
hello world!
交叉编译
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build
go mod使用
在 gopath下使用go mod报错,提示
# cd ~/gopath/src/testgo/
# go mod init testgo
go: modules disabled inside GOPATH/src by GO111MODULE=auto; see 'go help modules'
为了不改变当前的环境,我们需要把项目放在gopath外面:
# mkdir -p ~/goproject/testgo2
# cd ~/goproject/testgo2/
vim main.go
package main
import (
"fmt"
)
func main(){
fmt.Println("hello world!")
}
# go mod init testgo2
go: creating new go.mod: module testgo2
多了个go.mod
# ls
go.mod main.go
# vim go.mod
追加被墙的一些替代源
replace (
cloud.google.com/go => github.com/googleapis/google-cloud-go v0.40.0
golang.org/x/crypto => github.com/golang/crypto v0.0.0-20190621222207-cc06ce4a13d4
golang.org/x/exp => github.com/golang/exp v0.0.0-20190627132806-fd42eb6b336f
golang.org/x/image => github.com/golang/image v0.0.0-20190622003408-7e034cad6442
golang.org/x/lint => github.com/golang/lint v0.0.0-20190409202823-959b441ac422
golang.org/x/mobile => github.com/golang/mobile v0.0.0-20190607214518-6fa95d984e88
golang.org/x/net => github.com/golang/net v0.0.0-20190628185345-da137c7871d7
golang.org/x/oauth2 => github.com/golang/oauth2 v0.0.0-20190604053449-0f29369cfe45
golang.org/x/sync => github.com/golang/sync v0.0.0-20190423024810-112230192c58
golang.org/x/sys => github.com/golang/sys v0.0.0-20190626221950-04f50cda93cb
golang.org/x/text => github.com/golang/text v0.3.2
golang.org/x/time => github.com/golang/time v0.0.0-20190308202827-9d24e82272b4
golang.org/x/tools => github.com/golang/tools v0.0.0-20190628222527-fb37f6ba8261
google.golang.org/api => github.com/googleapis/google-api-go-client v0.7.0
google.golang.org/appengine => github.com/golang/appengine v1.6.1
google.golang.org/genproto => github.com/google/go-genproto v0.0.0-20190627203621-eb59cef1c072
google.golang.org/grpc => github.com/grpc/grpc-go v1.21.1
)
至此环境安装完成,接下来安装grpc