一、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

  1. -
  2. 配置环境变量

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

  1. -
  2. 安装c工具

sudo apt-get install bison ed gawk gcc libc6-dev make

  1. -
  2. 查看是否安装成功

go version

  1. <a name="42ee552d"></a>
  2. ### 3、下载golang IDE工具
  3. [https://www.jetbrains.com/go/download/#section=linux](https://www.jetbrains.com/go/download/#section=linux)
  4. <a name="20212751"></a>
  5. ### 4、golang 命令工具
  6. - go build 编译并安装自身包和依赖包
  7. - go install 安装自身包和依赖包
  8. - gofmt 格式化代码
  9. - go doc package 生成文档
  10. - go fix 用于将你的 Go 代码从旧的发行版迁移到最新的发行版
  11. - go test 是一个轻量级的单元测试框架
  12. <a name="66f0b997"></a>
  13. ## 二、golang入门学习
  14. <a name="4195be19"></a>
  15. ### 2.1、编写helloworld.go并运行
  16. - 编写hello.go代码代码

package main

import “fmt”

func main() { fmt.Println(“Hello, World!”) }

  1. -
  2. 命令行运行

go run hello.go

  1. -
  2. 查看更多命令

go help

  1. <a name="8b789b3f"></a>
  2. ### 2.2、调用外部代码
  3. -
  4. 可以使用pkg.go.dev网站找到已发布模块的包,并导入自己的代码当中使用
  5. -
  6. 为了顺利导入包并使用,需要配置包下载代理服务
  7. - [https://goproxy.cn/](https://goproxy.cn/)

Go 1.13 及以上(推荐)

打开命令行,输入以下命令

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

  1. -
  2. 代码 HelloWorld.go

package main

import “fmt” import “rsc.io/quote”

func main() { fmt.Print(“Hello World!”) fmt.Println(quote.Go()) }

  1. -
  2. 配置依赖关系

当需要引用其他模块时,go.mod 文件会列出需要的模块以及对应版本

创建go.mod

go mod init HelloWorld

  1. -
  2. 运行

go run HelloWorld.go

Hello World!Don’t communicate by sharing memory, share memory by communicating.

  1. <a name="b6779fc9"></a>
  2. ### 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` |

参考