zoukankan      html  css  js  c++  java
  • 跨平台编译

    跨平台编译

    默认我们go build的可执行文件都是当前操作系统可执行的文件,如果我想在windows下编译一个linux下可执行文件,那需要怎么做呢?

    Windows编译Linux可执行文件

    如果我想在Windows下编译一个Linux下可执行文件,那需要怎么做呢?只需要在编译时指定目标操作系统的平台和处理器架构即可。

    注意:无论你在Windows电脑上使用VsCode编辑器还是Goland编辑器,都要注意你使用的终端类型,因为不同的终端下命令不一样!!!目前的Windows通常默认使用的是PowerShell终端。

    如果你的Windows使用的是cmd,那么按如下方式指定环境变量。

    SET CGO_ENABLED=0  // 禁用CGO
    SET GOOS=linux  // 目标平台是linux
    SET GOARCH=amd64  // 目标处理器架构是amd64
    

    如果你的Windows使用的是PowerShell终端,那么设置环境变量的语法为

    $ENV:CGO_ENABLED=0
    $ENV:GOOS="linux"
    $ENV:GOARCH="amd64"
    

    在你的Windows终端下执行完上述命令后,再执行下面的命令,得到的就是能够在Linux平台运行的可执行文件了。

    go build
    

    Windows编译Mac可执行文件

    Windows下编译Mac平台64位可执行程序:

    cmd终端下执行:

    SET CGO_ENABLED=0
    SET GOOS=darwin
    SET GOARCH=amd64
    go build
    

    PowerShell终端下执行:

    $ENV:CGO_ENABLED=0
    $ENV:GOOS="darwin"
    $ENV:GOARCH="amd64"
    
    
    go build
    

    Mac编译Linux可执行文件

    Mac电脑编译得到Linux平台64位可执行程序:

    CGO_ENABLED=0 GOOS=linux GOARCH=amd64     go build
    

    Mac编译Windows可执行文件

    Mac电脑编译得到Windows平台64位可执行程序:

    CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build
    

    Linux编译Mac可执行文件

    Linux平台下编译Mac平台64位可执行程序:

    CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build
    

    Linux编译Windows可执行文件

    Linux平台下编译Windows平台64位可执行程序:

    CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build
    

    基本命令介绍

    直接在终端中输入 go help 即可显示所有的 go 命令以及相应命令功能简介,主要有下面这些:

    • build: 编译包和依赖
    • clean: 移除对象文件
    • doc: 显示包或者符号的文档
    • env: 打印go的环境信息
    • bug: 启动错误报告
    • fix: 运行go tool fix
    • fmt: 运行gofmt进行格式化
    • generate: 从processing source生成go文件
    • get: 下载并安装包和依赖
    • install: 编译并安装包和依赖
    • list: 列出包
    • run: 编译并运行go程序
    • test: 运行测试
    • tool: 运行go提供的工具
    • version: 显示go的版本
    • vet: 运行go tool vet

    build 和 run 命令

    就像其他静态类型语言一样,要执行 go 程序,需要先编译,然后在执行产生的可执行文件。go build 命令就是用来编译 go程序生成可执行文件的。但并不是所以的 go 程序都可以编译生成可执行文件的, 要生成可执行文件,go程序需要满足两个条件:

    • 该go程序需要属于main包
    • 在main包中必须还得包含main函数

    也就是说go程序的入口就是 main.main, 即main包下的main函数, 例子(test.go):

    编译hello.go,然后运行可执行程序:

    $ go run test.go   # 将会生成可执行文件 test
    $ ./test           # 运行可执行文件
    Hello, World!
    

    上面就是 go build 的基本用法,另外如果使用 go build 编译的不是一个可执行程序,而是一个包,那么将不会生成可执行文件。

    go run 命令可以将上面两步并为一步执行(不会产生中间文件)。

    $ go run test.go
    Hello, World!
    

    上面两个命令都是在开发中非常常用的。

    此外 go clean 命令,可以用于将清除产生的可执行程序:

    $ go clean    # 不加参数,可以删除当前目录下的所有可执行文件
    $ go clean hello.go  # 会删除对应的可执行文件
    

    get 命令

    这个命令同样也是很常用的,我们可以使用它来下载并安装第三方包, 使用方式:

    go get src
    

    从指定源上面下载或者更新指定的代码和依赖,并对他们进行编译和安装,例如我们想使用 beego 来开发web应用,我们首先就需要获取 beego:

    go get github.com/astaxie/beego
    

    这条命令将会自动下载安装 beego 以及它的依赖,然后我们就可以使用下面的方式使用:

    package main
    
    import "github.com/astaxie/beego"   # 这里需要使用 src 下的完整路径
    
    func main() {
        beego.Run()
    }
    
    在当下的阶段,必将由程序员来主导,甚至比以往更甚。
  • 相关阅读:
    centos7.7环境下编译安装tengine2.3.2版本
    centos6.9安装python3.6.9独立的virtualenv环境,并且能正确引入ssl
    django在centos生产环境的部署
    django入门8之xadmin引入富文本和excel插件
    jenkins服务器使用python脚本rabbitmqadmin和shell对目标服务器进行管理
    django入门7之django template和xadmin常用技巧
    mysql5.7同步复制报错1060故障处理
    Centos7.6使用yum安装PHP7.2
    django中安全sql注入等
    django入门6引入验证码插件 django-simple-captcha
  • 原文地址:https://www.cnblogs.com/randysun/p/15400468.html
Copyright © 2011-2022 走看看