Go 跨平台编译

【Golang】使用Zig跨平台编译带有CGO依赖的Go项目 使用Go语言进行跨平台编译通常很简单,只需要设置GOOS和GOARCH环境变量,然后执行go build命令即可。然而,对于那些使用CGO依赖的项目来说,情况可能会变得更复杂。 阅读详情

1. 简介

跨平台编译,也称为交叉编译,是指在一个平台上生成另一个平台上的可执行文件。这个过程涉及到一个体系架构(Architecture)和操作系统(Operating System)两个概念。同一个体系架构可以运行不同的操作系统,同样,同一个操作系统也可以在不同的体系架构上运行。

具体到跨平台编译,是指将一个源代码编译成适合另一个平台的可执行文件,这需要考虑到目标平台的体系架构和操作系统的特性。在编译过程中,根据目标平台的体系架构和操作系统参数进行初始化设置,然后调用对应平台编写的特定方法来生成机器码,从而实现跨平台编译。

2. 参数说明

2.1. GOOS

目标操作系统

  • linux
  • darwin
  • windows
  • …

2.2. GOARCH

目标操作系统架构

  • amd64
  • arm
  • …

2.3. CGO_ENABLED

CGO是用来调用C语言函数库的一种机制。
注意:一但启用,就不在支持跨平台编译

  • 0:不可用
  • 1:可用

3. 示例

本身平台直接go build就可以了
可以使用go tool dist list查看支持平台

3.1. macOS

macOS编译到Linux

export CGO_ENABLED=0
export GOOS=linux
export GOARCH=amd64
go build

macOS编译到Windows

export CGO_ENABLED=0
export GOOS=windows
export GOARCH=amd64
go build

3.2. Windows

Windows编译到Linux

set CGO_ENABLED=0
set GOOS=linux
set GOARCH=amd64
go build

Windows编译到macOS

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

3.3. Linux

Linux编译到macOS

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

Linux编译到Windows

export CGO_ENABLED=0
export GOOS=windows
export GOARCH=amd64
go build

4. 参考

golang程序的跨平台编译 golang程序的跨平台编译 最近写的golang服务器程序, 开始在X86_64上面运行,后来要求在ARM平台上执行,查阅了若干资料反复尝试才完成任务,程序可以在ARM上面执行,将关键点记录以备将来查阅。 golang的编译环境安装在X86_64上,设置主机变量如下,表示宿主环境为X64下的linux, GOHOSTARCH="amd64" GOHOSTOS="linux" 当编译X6 阅读详情

相关推荐

Go语言跨平台开发:交叉编译工具链解析

在云计算、边缘计算和物联网快速发展的今天,软件开发需要面对多样化的硬件架构和操作系统环境。Go语言凭借其简洁的语法、高效的并发模型和原生的跨平台支持,成为构建分布式系统、微服务和高性能工具的首选语言之一。本文聚焦Go语言的交叉编译能力,详细解析其工具链的工作原理、配置方法及实际应用,帮助开发者实现“一次编写,随处编译”的高效开发模式。背景与核心概念:定义交叉编译关键术语,解析Go工具链架构编译原理与环境配置:讲解编译流程、环境变量及工具链组件实战案例:通过具体项目演示多平台编译过程。

AI Agent Harness Engineering 1469

跨平台编译go(交叉编译)/go在windows编译添加图标icon

以将一个简单的go http 部署到docker为例!

General_zy的博客 3497

Go 学习笔记(37)— 标准命令行工具(go build 跨平台编译、交叉编译、go clean、go run、go fmt、go install、go get、go vet)

1. 标准命令简述 Go 本身包含来大量用于处理 Go 程序的命令和工具。 命令 作用 build 用于编译指定的代码包或 Go 语言源码文件。命令源码文件会被编译成可执行文件,并存放到命令执行的目录或指定目录下。而库源码文件被编译后,则不会在非临时目录中留下任何文件。 clean 用于清除因执行其他 go 命令而遗留下来的临时目录和文件。 doc 用于显示打印 Go 语言代码包以及程序实体的文档。 env 用于打印 Go 语言相关的环境信息。 fix 用于修正指定代码的

wohu1104的专栏 9798

go程序的跨平台编译

默认我们go build的可执行文件都是当前操作系统可执行的文件,Go语言支持跨平台编译——在当前平台(例如Windows)下编译其他平台(例如Linux)的可执行文件。 Windows编译Linux可执行文件: 注意:无论你在Windows电脑上使用VsCode编辑器还是Goland编辑器,都要注意你使用的终端类型,因为不同的终端下命令不一样!!!目前的Windows通常默认使用的是PowerShell终端。 如果你的Windows使用的是cmd,那么设置环境变量的语法为 SET CGO_ENA

怪只怪满眼尽是人间烟火 2150

Go语言多平台打包:交叉编译最佳实践

在云计算、边缘计算与物联网蓬勃发展的今天,Go语言凭借高效的并发模型和简洁的语法,成为跨平台开发的首选语言之一。开发者经常需要将单一代码库编译为支持Linux、Windows、macOS、ARM等不同平台的可执行文件。传统本地编译方式无法满足多平台需求,而交叉编译技术允许在单个开发环境中生成目标平台的二进制文件,极大提升工程部署效率。本文将深入解析Go交叉编译的核心机制,涵盖环境配置、代码适配、依赖管理、CGO混合编程等关键环节,并通过完整项目实战演示从源码到多平台二进制文件的全流程。

AI Agent Harness Engineering 2174

大模型学习路线之多模态模型

​ (Frankly speaking,博主太懒了)章节一只对CLIP、BLIP、BLIP2、InstructBLIP进行了整理,章节二以CLIP、VisualGLM作为实践案例。​ 实际上多模态模型除了CLIP、BLIP、BLIP2、InstructBLIP,还有LLaVA、miniGPT4,以及国内清华的VisualGLM、阿里的Qwen-VL等。(更多多模态原理可以看文末的参考说明)一、多模态模型 & 理论。

2401_86435672的博客 2287

go 跨平台编译linux,golang跨平台编译

近期在某本书上看到Go跨平台交叉编译的强大功能,于是想自己测试一下。以下记录了测试过程以及一些结论,希望能给大家带来帮助。我的Linux环境如下:uname -aLinux ubuntu-Server-14 3.13.0-32-generic #57-Ubuntu SMP Tue Jul 15 03:51:08 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux$ go...

weixin_39636717的博客 635

数分实战(01):Global_Superstore数据集解析与商业洞察

本文以Global_Superstore零售数据集为例,手把手指导数据分析实战全流程。从数据清洗、探索性分析到深度商业洞察,详细解析了如何通过Python处理缺失值与异常值,进行销售利润分析、客户细分与地理分析,并探讨了折扣与利润的微妙关系。文章旨在帮助读者建立数据分析思维框架,从数据中挖掘可指导实际业务决策的核心洞察。

weixin_28487433的博客 342

go 跨平台编译linux,golang 跨平台编译

第一次接触跨平台编译是在阅读 evio 源码的时候, 发现它的internal包下面的 internal_linux.go 和internal_bsd.go 定义了两个一模一样的函数名 OpenPoll() , golang 在同一个包下是不允许有同名函数的, 后来仔细阅读源码才发现 在 internal_bsd.go 文件的开头有一行注释// +build darwin netbsd fre...

weixin_30595763的博客 295

Android14_MTK调试LCD屏功能

android14 MTK平台调试LCD屏

m0_37786046的博客 1471

Python实战:5分钟搞定N-CMAPSS航空发动机数据集解析(附完整代码)

本文提供了一份针对N-CMAPSS航空发动机数据集的快速解析实战指南。通过Python的h5py和Pandas库,详细演示了如何高效读取HDF5格式文件、理解数据结构、提取关键特征(如传感器数据与剩余使用寿命RUL),并整合为可用于预测性维护分析的DataFrame,帮助研究者和工程师快速上手这一重要的工业时序数据集。

weixin_29083373的博客 278

go系列-golang跨平台编译

指可以在多种非linux操作系统上编译成linux平台可执行的文件。

sre救赎之路 766

onnxruntime模型部署(一)-pythonAPI

简单模型的onnx模型的导出,以及onnxruntime推理引擎的模型部署

qq_45983373的博客 4059

linux 下go 交叉编译,Golang跨平台交叉编译

近期在某本书上看到Go跨平台交叉编译的强大功能,于是想自己测试一下。以下记录了测试过程以及一些结论,希望能给大家带来帮助。我的Linux环境如下:uname -aLinux Ubuntu-Server-14 3.13.0-32-generic #57-Ubuntu SMP Tue Jul 15 03:51:08 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux$ go...

weixin_39727005的博客 1227

openEuler Embedded新增软件包及在线安装软件方法

openEuler Embedded是基于Yocto构建的嵌入式操作系统,默认不包含dnf/apt软件包管理器,主要使用rpm格式。新增软件需通过manifest文件检查是否集成,未集成则需适配新配方。对于在线安装需求,可采用轻量级容器方案:通过isulad运行openEuler服务器版容器镜像,在容器内使用dnf命令安装软件(如Nginx),实现服务器生态兼容。部署前提包括设备支持、存储空间(≥10GB)和网络连接,需先安装并启动isulad服务。这种方法结合了嵌入式系统的轻量化特性和服务器系统的软件管理

专注嵌入式开发与 Linux 系统应用实战,分享芯片驱动、设备调试、系统工具开发干货。 1225

PLL Performance,Simulation and Design 4th学习笔记——Chapter1

Chapter1:基本PLL概述 VCO:Voltage-Controlled Oscillator压控振荡器,对于给定的一个输入电压,输出特定频率的振荡信号。 PLL:Phase-Locked Loops锁相环,输出特定频率,特定相位的振荡信号。 基本PLL操作和术语 基本模块 基本模块 输入 输出 传输函数 说明 XTAL - 参考频率ϕref\phi_{ref}ϕref​ - 稳定的晶振提供输入参考频率(这里用相位,便于理解鉴相器) R Counter ϕref\phi_{ref

张硕的博客 1551

Golang跨平台编译

本文介绍了Golang跨平台编译的一些常用选项参数,并给除了几个常用的跨平台编译的例子。

qq_22881345的博客 855

MATLAB基础应用精讲-【数模应用】PPO算法(附python代码实现)(二)

表示为状态转移概率和动作选择概率的乘积,因为状态和动作决定轨迹。

qq_36130719的博客 413

go Android 交叉编译,搭建golang跨平台编译环境-Go语言中文社区

环境配置安装Docker安装golang安装xgo镜像及编译指令配置环境变量1. 安装docker针对Mac和Windows可以直接下载安装包进行安装,其他系统可以使用命令行进行安装.参考链接,最后通过docker version 指令进行查看# Jacen at EveeedeMacBook-Pro.local in ~ [10:51:52] docker versionClient:Versi...

weixin_29159613的博客 663

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

golang跨平台交叉编译 转自go中文网

(1)首先进入go/src 源码所在目录,执行如下命令创建目标平台所需的包和工具文件。 $ cd /usr/local/go/src $ CGO_ENABLED=0 GOOS=linux GOARCH=amd64 ./make.bash 如果是 Windows 则修改 GOOS 即可。 $ CGO_ENABLED=0 GOOS=windows GOARCH=amd64 ./m...

Lee的程序空间 327

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Go 的跨平台编译详解

Go 语言的设计哲学决定了它在某些领域拥有无与伦比的优势。我们不仅会探讨这些场景,还会详细拆解其“杀手级特性”——跨平台编译。

上善若水 842

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Golang 跨平台编译

Golang 跨平台编译 *转自 http://studygolang.com/topics/21

timemachine119的博客 731

windows下 golang 跨平台编译

linux 64SET CGO_ENABLED=0 SET GOOS=linux SET GOARCH=amd64 go build          windows SET CGO_ENABLED=1 SET GOOS=windows SET GOARCH= go build    

qq_31938221的博客 5290

手把手教你实现Golang跨平台编译

前言之前的文章,我们已经搭建了Go语言环境,可以戳这里:手把手带你进行Golang环境配置,还实现了第一个Go程序,本次我们来安排一下如何实现跨平台编译。跨平台编译跨平台编译,也叫交叉编译...

菜鸟小白的学习分享 4415

golang跨平台编译

当我们跨平台编译go程序的时候,只需在build的时候指定目标主机的os和arch CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build main.go // win x64 CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.go // linux x64 CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build main.go // mac x64 当我.

zhuyuqiang1238的专栏 667
上一篇: Python with
下一篇: Go Barrier栅栏
yimtcode
博客等级 码龄6年 205粉丝 140原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yimtcode

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值