Go语言Mac、Linux、Windows 下交叉编译

在很多时候,由于开发的方便,会有这样的场景出现,使用Mac开发或使用Windows开发,需要编译成Linux系统的执行文件,那么如何做到?Go语言提供了非常方便的命令行操作,即可实现。

1、Mac下编译Linux, Windows

# Linux
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build filename.go

# Windows
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build filename.go

2、Linux下编译Mac, Windows

# Mac
CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build filename.go

# Windows
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build filename.go

3、Windows下编译Mac, Linux

# Mac
SET CGO_ENABLED=0
SET GOOS=darwin
SET GOARCH=amd64
go build filename.go

# Linux
SET CGO_ENABLED=0
SET GOOS=linux
SET GOARCH=amd64
go build filename.go

4、参数说明

查看环境:

    $> go env
    set GOARCH=amd64
    set GOBIN=
    set GOCACHE=C:\Users\bboyHan\AppData\Local\go-build
    set GOEXE=
    set GOHOSTARCH=amd64
    set GOHOSTOS=windows
    set GOOS=linux
    set GOPATH=C:\Go\workspace\study\src    set GORACE=
    set GOROOT=C:\Go
    set GOTMPDIR=
    set GOTOOLDIR=C:\Go\pkg\tool\windows_amd64
    set GCCGO=gccgo
    set CC=gcc
    set CXX=g++
    set CGO_ENABLED=0
    set CGO_CFLAGS=-g -O2
    set CGO_CPPFLAGS=
    set CGO_CXXFLAGS=-g -O2
    set CGO_FFLAGS=-g -O2
    set CGO_LDFLAGS=-g -O2
    set PKG_CONFIG=pkg-config
    set GOGCCFLAGS=-fPIC -m64 -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=C:\Users\bboyHan\AppData\Local\Temp\go-build162645406=/tmp/go-build -gno-record-gcc-switches

原文地址:https://www.cnblogs.com/haima/p/12041833.html

时间: 2024-11-10 14:29:48

Go语言Mac、Linux、Windows 下交叉编译的相关文章

使用VS Code配合Remote Development插件连接远程服务器(Mac/Linux+Windows) | Using VS Code with Remote Development Connect to Remote Server (Mac/Linux+Windows)

最新版VS Code(2019年6月)出了一系列新的插件,包括Remote Development,Remote SSH等,使得用户可以使用VS Code远程连接服务器写代码,方便了协同工作.具体配置(Mac/Linux, Windows)操作如下: 1.首先,在插件市场中搜索这些插件,安装Remote Development即可将一系列插件,包括Remote SSH等一同安装. 2.接下来需要生成ssh的key. 打开命令行,输入: ssh-keygen -t rsa -b 4096 接下来,

Mac /Ubuntu/Windows 下安装nodejs

Mac If you're using the excellent homebrew package manager, you can install node with one command: brew install node. Otherwise, follow the below steps: Install Xcode. Install git. Run the following commands: darwin_setup.sh git clone git://github.co

在Mac/Linux/Windows上编译corefx遇到的问题及解决方法

这两天尝试在Mac/Linux/Windows三大平台上编译.NET跨平台三驾马车(coreclr/corefx/dnx)之一的corefx(.NET Core Framework),结果三个平台的编译都失败了.后来一一都解决了,在这篇博文中分享一下. (一) 在Mac上编译corefx遇到的错误如下: /git/dotnet/corefx/dir.props(214,5): warning : The Roslyn targets do not exist- Roslyn will not b

Golang 在 Mac、Linux、Windows 下交叉编译

Golang 支持在一个平台下生成另一个平台可执行程序的交叉编译功能. Mac下编译Linux, Windows平台的64位可执行程序: 1 CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build [application | gofile.go] 2 CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build [application | gofile.go] Linux下编译Mac, Windows平台的64位可执行

phpstorm分别在Mac和Windows下启动命令行,并启用ssh

Mac:在terminal下运行 sudo -i 输入密码  就可以用ssh IP:端口  命令行登录了 DAssist是一个命令行开发辅助,可直接在系统命令行工具中使用,Linux和MacOS等自带命令终端的系统好说,windows下也有cmd和powerShell.那么如何结合开发IDE工具进行使用?这要求编程使用的IDE必须支持terminal(默认支持或者插件扩展支持均可),PHP Web开发常用工具有jetBrains系列的phpStorm.WebStorm,也有用Sublime Te

linux windows下oenvpn客户端的用法

windows下使用openvpn客户端 1.下载openvpn-2.2.0-install.zip客户端安装包 2.解压到你要安装的目录,如D盘的openvpn目录下 3.解压后会有openvpn-2.2.0-install.exe软件.双击,一路向前安装即可 4.在安装目录下的bin目录会有openvpn-gui-1.0.3.exe,双击即可打开vpn客户端.(桌面也会有OpenVPN GUI) 5.把openvpn服务端上的keys目录下,和客户端相关的内容下载下来. 相关的文档有 ca.

游戏制作之路:游戏引擎选择、Mac下和Windows下UnrealEngine 4体验对比、文档及其他

UnrealEngine 4和Unity3d的选择 订阅了UrealEngine4(UE4)开发者.我开始做网站用的是ASP.NET和C#,之后做网站虽然换用更方便的PHP(因为做的都是小网站).我想说,做了长达7年的小网站就算我再水,但是C#我还是懂一些的,而Unity3d刚刚好最建议用的就是C#.C++我不懂,只在高中毕业后看了C++编程思想并把大部分例子都手打入电脑并运行.不极是在肖极Unity3d在移动端有大量成功的案例,文档非常好,视频教程也很全,研究的人也非常多,有问题很容易找到文案

java File linux windows 下 绝对路径 相对路径问题

前言 当前项目目录 windows 为  E:\project\testpro\ linux 为  /project/testpro/ Windows环境下获取绝对路径情况 使用 a/b/c 为路径,获取绝对路径:  new File("a/b/c").getAbsolutePath() 其得到路径为  E:\project\testpro\sspt-sppt\a\b\c 使用 /a/b/c 路径,获取绝对路径  new File("/a/b/c").getAbso

c++ 网络编程(四)TCP/IP LINUX/windows下 socket 基于I/O复用的服务器端代码 解决多进程服务端创建进程资源浪费问题

原文作者:aircraft 原文链接:https://www.cnblogs.com/DOMLX/p/9613861.html 好了,继上一篇说到多进程服务端也是有缺点的,每创建一个进程就代表大量的运算与内存空间占用,相互进程数据交换也很麻烦. 本章的I/O模型就是可以解决这个问题的其中一种模型...废话不多说进入主题-- I/O复用技术主要就是select函数的使用. 一.I/O复用预备知识--select()函数用法与作用 select()用来确定一个或多个套接字的状态(更为本质一点来讲是文