理解目标:
命令go env,如下:
GO111MODULE="auto" GOARCH="amd64" GOBIN="/Users/douxiaobo/go/bin" GOCACHE="/Users/douxiaobo/Library/Caches/go-build" GOENV="/Users/douxiaobo/Library/Application Support/go/env" GOEXE="" GOEXPERIMENT="" GOFLAGS="" GOHOSTARCH="amd64" GOHOSTOS="darwin" GOINSECURE="" GOMODCACHE="/Users/douxiaobo/go/pkg/mod" GONOPROXY="" GONOSUMDB="" GOOS="darwin" GOPATH="/Users/douxiaobo/go" GOPRIVATE="" GOPROXY="https://proxy.golang.org,direct" GOROOT="/usr/local/go" GOSUMDB="sum.golang.org" GOTMPDIR="" GOTOOLDIR="/usr/local/go/pkg/tool/darwin_amd64" GOVCS="" GOVERSION="go1.17.3" GCCGO="gccgo" AR="ar" CC="clang" CXX="clang++" CGO_ENABLED="1" GOMOD="" CGO_CFLAGS="-g -O2" CGO_CPPFLAGS="" CGO_CXXFLAGS="-g -O2" CGO_FFLAGS="-g -O2" CGO_LDFLAGS="-g -O2" PKG_CONFIG="pkg-config" GOGCCFLAGS="-fPIC -arch x86_64 -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/3x/txs8lfzs6s13njkkrvjmnz2c0000gn/T/go-build2603688842=/tmp/go-build -gno-record-gcc-switches -fno-common"
要指定目标平台,可以环境变量的方式给编译器指定操作系统和体系结构。要指定操作系统,可使用环境变量GOOS;要指定体系结构,可使用环境变量GO。
要为32位的Linux系统编程程序,如下:
GOOS=linux GOARCH=386 go build main.go
结果生成了Unix文件main。
要为64位的Windows系统编译程序,可执行下面的命令如下:
GOOS=windows GOARCH=amd64 go build main.go
结果生成新文件main.exe。
压缩二进制文件的大小:
输入命令行如下:
go build main.go
然后输入命令行“ls -l”,运行结果如下:
-rwxr-xr-x 1 douxiaobo staff 1932288 1 27 18:37 main -rw-r--r-- 1 douxiaobo staff 389 1 27 17:52 main.go
输入命令行如下:
GOOS=linux go build -ldflags="-s -w" main.go
然后输入命令行“ls -l”,运行结果如下:
-rwxr-xr-x 1 douxiaobo staff 1298432 1 27 18:33 main -rw-r--r-- 1 douxiaobo staff 389 1 27 17:52 main.go
二进制文件运行工具upx。
使用Docker:(没条件试一试, 只能抄袭)
示例Web服务器,程序清单如下:
package main
import (
"net/http"
)
func helloWorld(w http.ResponseWriter, r *http.Request){
w.Write([]byte("Hello World.n"))
}
func main() {
http.HandleFunc("/",helloWorld)
http.ListenAndServe(":8000",nil)
}
Docker文件,程序清单如下:
FROM golang:1.9 COPY example02.go / RUN go build -o /emaple02/example02.go EXPOSE 8000 ENTRYPOINT ["/example02"]
要在本地计算机构建这个映像,可执行如下命令:
docker build -t hello-go .
构建映像后,就可在本地计算机上运行容器了。
docker run -p 8000:8000 hello-go:latest
这个命令将容器的端口8000绑定到主机,这意味着可以访问这个容器了。如果浏览器中输入http://localhost:8000/ ,这个应用程序将响应以文本Hello World。
要停止这个应用程序,可再打开一个终端,并在其中执行如下命令:
docker ps
这将显示这个应用程序的id号。通过执行下面的命令,并指定这个id号,可关闭相应的Docker容器。
docker stop
下载二进制文件:
使用macOS系统,使用shasum命令; 使用Windo
ws系统,可下载文件校验和完整性验证器(File Checksum Integrity Verifiter)来验证校验和。
两次输入命令行如下:
go build main.go shasum main
运行结果如下:
6397724e92e35f809887257349ee7aab5f375042 main
使用go get:
在发布代码斋,一种轻量级但有效的方式是使用命令go get。命令go get可用来安装命令行工具,是官方采用的方法,低干涉方法非常有效。go get适合用来分享命令行工具。
通过包管理器发布代码:
Homebrew:用于macOS系统。
Chocolatey:用于Windows系统。
Apt:用于Debian和Ubuntu系统。
Yum:用于Fedora、Red Hat和Centos系统。
Pacman:用于Arch Linux系统。



