Gin实践 番外 Golang交叉编译
Golang交叉编译项目地址:https://github.com/EDDYCJY/go... (快上车,支持一波) 原文地址:https://segmentfault.com/a/11... 前言在 连载九 讲解构建Scratch镜像时,我们编译可执行文件用了另外一个形式的命令,不知道你有没有疑问? $ CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o go-gin-example . 说明我们将讲解命令各个参数的作用,希望你在阅读时,将每一项串联起来,你会发现这就是交叉编译相关的小知识 也就是 一、CGO_ENABLED作用: 用于标识(声明) 意义: 存在交叉编译的情况时, 小结: 结合案例来说,我们是在宿主机编译的可执行文件,而在 关闭 补充:
$ go env GOARCH="amd64" GOBIN="" GOCACHE="/root/.cache/go-build" GOEXE="" GOHOSTARCH="amd64" GOHOSTOS="linux" GOOS="linux" ... GCCGO="gccgo" CC="gcc" CXX="g++" CGO_ENABLED="1" ... 二、GOOS用于标识(声明)程序构建环境的目标操作系统 如:
三、GOARCH用于标识(声明)程序构建环境的目标计算架构 若不设置,默认值与程序运行环境的目标计算架构一致(案例就是采用的默认值) 如:
四、GOHOSTOS用于标识(声明)程序运行环境的目标操作系统 五、GOHOSTARCH用于标识(声明)程序运行环境的目标计算架构 六、go build-a强制重新编译,简单来说,就是不利用缓存或已编译好的部分文件,直接所有包都是最新的代码重新编译和关联 -installsuffix作用: 在软件包安装的目录中增加后缀标识,以保持输出与默认版本分开 补充: 如果使用 -o指定编译后的可执行文件名称 小结大部分参数指令,都有一定关联性,且与交叉编译的知识点相关,可以好好品味一下 最后可以看看 $ go help build usage: go build [-o output] [-i] [build flags] [packages] ... -a force rebuilding of packages that are already up-to-date. -n print the commands but do not run them. -p n the number of programs,such as build commands or test binaries,that can be run in parallel. The default is the number of CPUs available. -race enable data race detection. Supported only on linux/amd64,freebsd/amd64,darwin/amd64 and windows/amd64. -msan enable interoperation with memory sanitizer. Supported only on linux/amd64,and only with Clang/LLVM as the host C compiler. -v print the names of packages as they are compiled. -work print the name of the temporary work directory and do not delete it when exiting. -x print the commands. -asmflags '[pattern=]arg list' arguments to pass on each go tool asm invocation. -buildmode mode build mode to use. See 'go help buildmode' for more. -compiler name name of compiler to use,as in runtime.Compiler (gccgo or gc). -gccgoflags '[pattern=]arg list' arguments to pass on each gccgo compiler/linker invocation. -gcflags '[pattern=]arg list' arguments to pass on each go tool compile invocation. -installsuffix suffix a suffix to use in the name of the package installation directory,in order to keep output separate from default builds. If using the -race flag,the install suffix is automatically set to race or,if set explicitly,has _race appended to it. Likewise for the -msan flag. Using a -buildmode option that requires non-default compile flags has a similar effect. -ldflags '[pattern=]arg list' arguments to pass on each go tool link invocation. -linkshared link against shared libraries previously created with -buildmode=shared. -pkgdir dir install and load all packages from dir instead of the usual locations. For example,when building with a non-standard configuration,use -pkgdir to keep generated packages in a separate location. -tags 'tag list' a space-separated list of build tags to consider satisfied during the build. For more information about build tags,see the description of build constraints in the documentation for the go/build package. -toolexec 'cmd args' a program to use to invoke toolchain programs like vet and asm. For example,instead of running asm,the go command will run 'cmd args /path/to/asm <arguments for asm>'. ... 参考本系列示例代码
本系列目录
书籍
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |