学习 GO 过程中用过的命令

把用过的命令写下来,方便以后查找
下载 GO 及验证
查看版本
安装 protoc
安装 gRPC 框架及插件
g 命令行工具
go 的一些命令
build 命令

下载 GO 及验证

验证也很关键,当我用socks5代理时,wget命令不支持,然后用了curl,最后验证码对不上,现今我也没明白原因

$ wget -P /usr/local/go https://go.dev/dl/go1.23.4.linux-amd64.tar.gz
$ cd /usr/local/go
$ sha256sum go1.23.4.linux-amd64.tar.gz
$ tar -C /usr/local -xzf go1.23.4.linux-amd64.tar.gz

查看版本

$ go version    

安装 protoc

验证 protoc --version

安装 gRPC 框架及插件

$ go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
$ go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest
$ go get google.golang.org/grpc   //在模块内使用
验证
$ protoc-gen-go --version

生成原文件目录的 proto 文件

$ protoc --go_out=paths=source_relative:. *.proto
生成特定目录的 proto 文件

$ protoc --go_out=paths=source_relative:. .\app\dns\fakedns\*.proto

生成目录及子目录的所有 proto 文件到原文件路径

输出grpc文件

$ protoc --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative *.proto
清理并重新构建
$ go clean -i -cache
$ go build

g 命令行工具

g 是一个用于管理 Go 语言多个版本的命令行工具,它允许你在同一台机器上安装和切换不同的 Go 版本。
安装:

安装完后,配置环境变量: 将 ~/.g/bin 添加到 PATH 环境变量中。验证安装 g version
g 命令

$ g ls                         查询已安装的 go 版本
$ g ls-remote stable           查询当前可供安装的stable状态的 go 版本
$ g ls-remote                  查询可供安装的所有 go 版本
$ g install 1.23.2             安装目标 go 版本 1.23.2
$ g use 1.16                   切换到另一个已安装的 go 版本
$ g uninstall 1.16             卸载一个已安装的 go 版本
$ g clean                      清空 go 安装包文件缓存
$ g self update                更新 g 软件本身
$ g self uninstall             卸载 g 软件本身
$ g -v                         查询 g 版本信息

go 的一些命令

$ go mod init example.com/example                          建立 mod 文件
$ go mod edit -replace example.com/example=../example      改路径必须是本地目录  ../../ 表示上两层目录
$ go mod tidy                加载同步模块依赖项
$ go run .                   目录下执行程序
$ go build                   目录下编译程序  -o 输出的文件
$ .\hello.exe                windows下执行当前目录下文件    
$ ./hello                    linux下执行当前目录下文件    
$ go list -f '{{.Target}}'   发现安装路径
$ go get                     命令添加依赖项

build 命令

设置环境变量,实现交叉编译,在 windows8.1 下的 vscode 中,只有 Set-Item Env 命令起作用,其他在 powshell 中请自行研究

$ Set-Item Env:CGO_ENABLED "0"       不检查 c 代码的依赖库, "1" 为检查
$ Set-Item Env:GOOS "windows"        其他为 "linux" "android"
$ Set-Item Env:GOARCH "amd64""android" 中 必须设为 "arm64" 之前这两字符有点象,
                                     我没留意设置 "arm64",搞到死活要检查我的 c 依赖库
参数
-trimpath            从构建的二进制文件中移除所有文件系统路径
-ldflags             参数用于将链接器标志传递给链接器
"-s -w -buildid="    这里传递了三个标志, -s 移除符号表和调试信息, -w 移除 DWARF 调试信息, 
                     -buildid= 设置构建 ID 为空字符串,移除构建 ID
完整命令: 从当前目录下的文件夹 /main 查找 func main() 开始构建, 生成同级文件夹下 agz 可执行文件
go build -o ../run/agz -trimpath -ldflags "-s -w -buildid=" ./main