- 一、golang 语言环境搭建
- 1、 下载
- 2、安装
- Go 环境变量
- $GOROOT 表示 Go 在你的电脑上的安装位置
- $GOARCH 表示目标机器的处理器架构,它的值可以是 386、amd64 或 arm。
- $GOOS 表示目标机器的操作系统,它的值可以是 darwin、freebsd、linux 或 windows。
- $GOBIN 表示编译器和链接器的安装位置,默认是 $GOROOT/bin
- $GOPATH 工作目录
- 查看环境变量 go env
- $HOME/.profile 当前用户
- /etc/profile 系统全部用户
- 刷新
- Go 1.13 及以上(推荐)
- 打开命令行,输入以下命令
- 当需要引用其他模块时,go.mod 文件会列出需要的模块以及对应版本
- 创建go.mod
- Hello World!Don’t communicate by sharing memory, share memory by communicating.
- GOOS 目标系统:
- GOARCH 系统架构
- 在linux上编译arm平台的二进制
- CGO_ENABLED=1 GOOS=linux GOARCH=arm CC=arm-linux-gnueabi-gcc go build
- 在linux上编译arm64平台的二进制
- 如果提示找不到openssl/rand.h文件
- for macOS:
- for Debian, Ubuntu
一、golang 语言环境搭建
1、 下载
https://golang.org/dl/go1.15.6.linux-amd64.tar.gz
2、安装
- 解压 ``` tar -C /usr/local -xzf go1.15.6.linux-amd64.tar.gz
tar -C ~/software -xzf /home/hdj/Downloads/go1.15.6.linux-amd64.tar.gz
-配置环境变量
Go 环境变量
$GOROOT 表示 Go 在你的电脑上的安装位置
$GOARCH 表示目标机器的处理器架构,它的值可以是 386、amd64 或 arm。
$GOOS 表示目标机器的操作系统,它的值可以是 darwin、freebsd、linux 或 windows。
$GOBIN 表示编译器和链接器的安装位置,默认是 $GOROOT/bin
$GOPATH 工作目录
查看环境变量 go env
$HOME/.profile 当前用户
/etc/profile 系统全部用户
export PATH=$PATH:/usr/local/go/bin
刷新
source $HOME/.profile
-安装c工具
sudo apt-get install bison ed gawk gcc libc6-dev make
-查看是否安装成功
go version
<a name="42ee552d"></a>### 3、下载golang IDE工具[https://www.jetbrains.com/go/download/#section=linux](https://www.jetbrains.com/go/download/#section=linux)<a name="20212751"></a>### 4、golang 命令工具- go build 编译并安装自身包和依赖包- go install 安装自身包和依赖包- gofmt 格式化代码- go doc package 生成文档- go fix 用于将你的 Go 代码从旧的发行版迁移到最新的发行版- go test 是一个轻量级的单元测试框架<a name="66f0b997"></a>## 二、golang入门学习<a name="4195be19"></a>### 2.1、编写helloworld.go并运行- 编写hello.go代码代码
package main
import “fmt”
func main() { fmt.Println(“Hello, World!”) }
-命令行运行
go run hello.go
-查看更多命令
go help
<a name="8b789b3f"></a>### 2.2、调用外部代码-可以使用pkg.go.dev网站找到已发布模块的包,并导入自己的代码当中使用-为了顺利导入包并使用,需要配置包下载代理服务- [https://goproxy.cn/](https://goproxy.cn/)
Go 1.13 及以上(推荐)
打开命令行,输入以下命令
go env -w GO111MODULE=on go env -w GOPROXY=https://goproxy.cn,direct
-代码 HelloWorld.go
package main
import “fmt” import “rsc.io/quote”
func main() { fmt.Print(“Hello World!”) fmt.Println(quote.Go()) }
-配置依赖关系
当需要引用其他模块时,go.mod 文件会列出需要的模块以及对应版本
创建go.mod
go mod init HelloWorld
-运行
go run HelloWorld.go
Hello World!Don’t communicate by sharing memory, share memory by communicating.
<a name="b6779fc9"></a>### 2.3、编译打包
GOOS 目标系统:
GOARCH 系统架构
# env GOOS=target-OS GOARCH=target-architecture go build package-import-path
在linux上编译arm平台的二进制
sudo apt-get install libc6-armel-cross libc6-dev-armel-cross binutils-arm-linux-gnueabi libncurses5-dev sudo apt-get install gcc-arm-linux-gnueabi g++-arm-linux-gnueabi CGO_ENABLED=1 GOOS=android GOARCH=arm go build
CGO_ENABLED=1 GOOS=linux GOARCH=arm CC=arm-linux-gnueabi-gcc go build
在linux上编译arm64平台的二进制
sudo apt-get install gcc-aarch64-linux-gnu CGO_ENABLED=1 GOOS=linux GOARCH=arm64 go build
如果提示找不到openssl/rand.h文件
for macOS:
brew install openssl brew link openssl —force
或者 export CGO_LDFLAGS=”-L/usr/local/opt/openssl/lib” export CGO_CPPFLAGS=”-I/usr/local/opt/openssl/include”
for Debian, Ubuntu
sudo apt-get install libssl-dev
CGO_ENABLED=0 GOOS=android GOARCH=arm64 CC=arm64-linux-gnueabi-gcc go build -a -o cloudreve -ldflags “ -X ‘github.com/cloudreve/Cloudreve/v3/pkg/conf.BackendVersion=$VERSION’ -X ‘github.com/cloudreve/Cloudreve/v3/pkg/conf.LastCommit=$COMMIT_SHA’”
``
|GOOS- Target Operating System |GOARCH- Target Platform |
| :---: | :---: |
|android|arm|
|darwin|386|
|darwin|amd64|
|darwin|arm|
|darwin|arm64|
|dragonfly|amd64|
|freebsd|386|
|freebsd|amd64|
|freebsd|arm|
|linux|386|
|linux|amd64|
|linux|arm|
|linux|arm64|
|linux|ppc64|
|linux|ppc64le|
|linux|mips|
|linux|mipsle|
|linux|mips64|
|linux|mips64le|
|netbsd|386|
|netbsd|amd64|
|netbsd|arm|
|openbsd|386|
|openbsd|amd64|
|openbsd|arm|
|plan9|386|
|plan9|amd64|
|solaris|amd64|
|windows|386|
|windows|amd64` |
参考
- https://pkg.go.dev/rsc.io/quote
- https://github.com/ustclug/mirrorrequest/issues/225
- 配置代理 https://goproxy.cn/
- https://github.com/unknwon/the-way-to-go_ZH_CN/blob/master/eBook/directory.md
- 编译 https://studygolang.com/articles/14376
- docker go编译镜像 https://github.com/karalabe/xgo
- go get github.com/mitchellh/gox
- https://gobyexample.com/
- golang 语言规范 http://golang.org/doc/go_spec.html
- golang 常见问题 https://golang.org/doc/faq
