理解目标:
命令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系统。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)