• go 命令


    go build

    go build,是我们非常常用的命令,它可以启动编译,把我们的包和相关的依赖编译成一个可执行的文件。

    go help build 帮助命令

    go build
    go build .
    go build test.go
    

    以上这三种写法,都是使用当前目录编译的意思。因为我们忽略了packages,所以自然就使用当前目录进行编译。

    go build shhnwagjian.com.cn/tools
    

    这种方式是指定包的方式,这样会明确的编译我们这个包。

    go build shhnwangjian.com.cn/tools/...
    

    3个点表示匹配所有字符串,这样go build就会编译tools目录下的所有包。

    Go提供了编译链工具,可以让我们在任何一个开发平台上,编译出其他平台的可执行文件。

    默认情况下,都是根据我们当前的机器生成的可执行文件,比如你的是Linux 64位,就会生成Linux 64位下的可执行文件,可以使用go env查看编译环境,以下截取重要的部分。

    两个重要的环境变量GOOS和GOARCH,其中GOOS指的是目标操作系统。GOOS和GOARCH组合起来,支持生成的可执行程序种类很多,具体组合参考如下

    https://golang.org/doc/install/source#environment

    官方介绍:

    Choices for $GOOS are darwin (Mac OS X 10.8 and above and iOS), dragonflyfreebsdlinuxnetbsdopenbsd,plan9solaris and windows.

    Choices for $GOARCH are amd64 (64-bit x86, the most mature port), 386 (32-bit x86), arm (32-bit ARM), arm64 (64-bit ARM), ppc64le (PowerPC 64-bit, little-endian), ppc64 (PowerPC 64-bit, big-endian), mips64le (MIPS 64-bit, little-endian), and mips64 (MIPS 64-bit, big-endian). mipsle (MIPS 32-bit, little-endian), and mips (MIPS 32-bit, big-endian). 

    GOOS=linux GOARCH=amd64 go build flysnow.org/hello

    上面命令生成linux 64位的程序。

    除了GOOS和GOARCH常用,在实际开发中,对于开发出的程序会显示编译时间、go版本等属性,我们会用到用ldflags设置变量的值

    GOOS=linux GOARCH=amd64 go build -ldflags "-X 'main.BUILD_TIME=`date "+%F %T"`' -X 'main.GO_VERSION=`go version`'" .

    代码中需要引入变量

    var (
    	BUILD_TIME string
            GO_VERSION string
    )
    
    func usage() {
       fmt.Fprintf(os.Stderr, `Options:
    Build Time: %v
    Go Version: %v
    `, BUILD_TIME, GO_VERSION)
       flag.PrintDefaults()
    }
    
  • 相关阅读:
    Mysql 从库的备份中恢复一张表
    my.cnf 配置文件参数解释
    利用mvn deploy命令上传包(转)
    IntelliJ IDEA 项目文件旁边都有0%classes,0% lines covered
    idea启动java Maven项目,出现" java: 程序包xxxx不存在"
    org/apache/poi/POIXMLTypeLoader或者java.lang.NoSuchFieldError: RETURN_NULL_AND_BLANK
    elasticsearch,kibana,logstash.下载
    idea显示 RunDashboard ,多个启动项时列表显示
    写for循环快捷生成方式
    Could not transfer artifact xxx from/to xxx解决方案
  • 原文地址:https://www.cnblogs.com/shhnwangjian/p/8447945.html
Copyright © 2020-2023  润新知