Golang 交叉编译之一文详解

在这里插入图片描述

博客原文

文章目录

    • Golang 中的交叉编译
    • 不同操作系统间的编译
      • Linux 下编译
        • windows
        • macos
      • windows 下编译
        • Linux
        • macos
      • macos 下编译
        • Linux
        • windows
    • 不同架构下的编译
      • amd64
      • x86
    • 参考

Golang 中的交叉编译

在 Golang 中,交叉编译指的是在同一台机器上生成针对不同操作系统或硬件架构的二进制文件。这在开发跨平台应用或构建特定平台的发布版本时非常有用。

不同操作系统间的编译

Linux 下编译

windows
$ CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build main.go
macos
$ CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build main.go

windows 下编译

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

推荐 git 终端: CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.go

macos
SET CGO_ENABLED=0
SET GOOS=darwin
SET GOARCH=amd64
go build main.go

git 终端: CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build main.go

macos 下编译

Linux
$ CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.go
windows
$ CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build main.go

不同架构下的编译

amd64

$ CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.go

x86

$ CGO_ENABLED=0 GOOS=linux GOARCH=386 go build main.go

注意不是 x86

上面几个示例中各环境变量的意思如下:

  • CGO_ENABLED:CGO_ENABLED=0 意思是禁用 CGO,因为交叉编译不能启用 CGO。
  • GOOS:表示目标平台,例如 mac 系统对应 darwin,linux 系统对应 linux,windows 系统对应 windows等。
  • GOARCH:目标平台的架构,例如 amd64,arm等。

参考

  1. [Golang 中的交叉编译详解 - 知乎 (zhihu.com)](https://zhuanlan.zhihu.com/p/649520911#:~:text=Golang 中的交叉编译在,Golang 中,交叉编译指的是在同一台机器上生成针对不同操作系统或硬件架构的二进制文件。 这在开发跨平台应用或构建特定平台的发布版本时非常有用。)
  2. Go 交叉编译 (跨平台编译) - 知乎 (zhihu.com)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/233883.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RabbitMQ(十一)队列的扩展属性(Arguments)

目录 一、简介二、队列扩展属性清单三、代码示例3.1 实现方式一:channel.queueDeclare()3.2 实现方式二:QueueBuilder.build() 一、简介 RabbitMQ 允许用户在声明队列、交换机或绑定时设置 扩展属性(Arguments),这些扩…

CSS 顶部位置翻转动画

<template><div class="container" @mouseenter="startAnimation" @mouseleave="stopAnimation"><!-- 旋方块 --><div class="box" :class="{ rotate-hor-top: isAnimating }"><!-- 元素内容 --…

Redis高可用

目录 一、Redis高可用简介 &#xff08;一&#xff09;什么是高可用 &#xff08;二&#xff09;Redis的高可用 二、Redis持久化的高可用技术 &#xff08;一&#xff09;持久化的功能 &#xff08;二&#xff09;进行持久化的方式 1.RDB 持久化 &#xff08;1&#xf…

Android Matrix (三)矩阵组合和应用变换

在 Android 开发中&#xff0c;Matrix 类不仅提供了 mapPoints 方法来变换点坐标&#xff0c;还提供了多种其他用法&#xff0c;使其成为处理图像和视图变换的强大工具。以下是 Matrix 类的一些关键用法&#xff1a; 1. 变换方法 setTranslate(float dx, float dy): 设置矩阵…

普中STM32-PZ6806L开发板(有点悲伤的故事)

简介 关于我使用 普中STM32-PZ6806L做了做了一些实验, 不小心输入12V&#xff0c;导致核心板等被烧坏, 为了利用电路和资源, 搭建了STM32F103CBT6并使用普中STM32-PZ6806L上面没有烧坏的模块的故事。 普中STM32-PZ6806L开发板 这块的STM32F103ZET6部分算是Closed了, 不准备换核…

【FPGA】分享一些FPGA入门学习的书籍

在做FPGA工程师的这些年&#xff0c;买过好多书&#xff0c;也看过好多书&#xff0c;分享一下。 后续会慢慢的补充书评。 【FPGA】分享一些FPGA入门学习的书籍【FPGA】分享一些FPGA协同MATLAB开发的书籍 【FPGA】分享一些FPGA视频图像处理相关的书籍 【FPGA】分享一些FPGA高速…

gem5学习(9):构建gem5——Building gem5

目录 一、Requirements for gem5 二、Getting the code 三、Your first gem5 build 1、gem5 binary types 四、Common errors 1、gcc版本过低 2、使用非默认版本的python 3、未安装M4宏处理器 4、Protobuf版本过低 前面的gem5学习&#xff08;3&#xff09;—&#xf…

SparkStreaming基础解析(四)

1、 Spark Streaming概述 1.1 Spark Streaming是什么 Spark Streaming用于流式数据的处理。Spark Streaming支持的数据输入源很多&#xff0c;例如&#xff1a;Kafka、Flume、Twitter、ZeroMQ和简单的TCP套接字等等。数据输入后可以用Spark的高度抽象原语如&#xff1a;map、…

差分信号,光耦介绍

差分信号 原理 差分信号是由双绞线进行通讯的&#xff0c;为什么选择双绞线呢&#xff1f;因为这其中有个电磁学的原理&#xff0c;在通讯过程中噪声一般来自外界天气或其它元器件的电磁干扰导致导线中的电流变得不稳定&#xff0c;如2.3v是低电平突然被噪声干扰会造成信号增…

IOS:Safari无法播放MP4(H.264编码)

一、问题描述 MP4使用H.264编码通常具有良好的兼容性&#xff0c;因为H.264是一种广泛支持的视频编码标准。它可以在许多设备和平台上播放&#xff0c;包括电脑、移动设备和流媒体设备。 使用caniuse查询H.264兼容性&#xff0c;看似确实具有良好的兼容性&#xff1a; 然而…

【设计模式之美】面向对象分析方法论与实现(二):需求到接口实现的方法论

文章目录 一. 进行面向对象设计1. 划分职责>需要有哪些类2. 定义类及其属性和方法3. 定义类与类之间的交互关系4. 将类组装起来并提供执行入口 二. 如何进行面向对象编程&#xff1f;1. 接口实现2. 辩证思考与灵活应用 【设计模式之美】面向对象分析方法论与实现&#xff08…

window mysql5.7 搭建主从同步环境

window 搭建mysql5.7数据库 主从同步 主节点 配置文件my3308.cnf [mysql] # 设置mysql客户端默认字符集 default-character-setutf8mb4[mysqld] server-id8 #server-uuidbc701be9-ac71-11ee-9e35-b06ebf511956 log-binD:\mysql_5.7.19\mysql-5.7.19-winx64\mysql-bin binlog-…

jvm虚拟机初识

JVM Java虚拟机就是二进制字节码的运行环境&#xff0c;负责装载字节码到其内部&#xff0c;解释/编译为对应平台上的机器指令执行。每一条Java指令&#xff0c;Java虚拟机规范中都有详细定义&#xff0c;如怎么取操作数&#xff0c;怎么处理操作数&#xff0c;处理结果放在哪…

云解析迁移【腾讯云到阿里云】

一、关闭 DNSSEC 域名如有配置DNSSEC&#xff0c;请先到域名注册商处关闭DNSSEC&#xff0c;等迁移完成后&#xff0c;再参考DNSSEC设置方法进行配置。如域名未配置DNSSEC&#xff0c;则忽略此步骤。 解析数据准备&#xff1a; 请在原DNS服务商处导出解析记录&#xff0c;并按…

眼镜用超声波清洗机洗会有伤害吗?这些超声波清洗机适合清洗眼镜

用超声波清洗机洗眼镜是一种非常好的选择&#xff0c;超声波清洗机通过高频振动&#xff0c;将眼镜上的污渍、灰尘等清洗干净&#xff0c;比手洗更彻底、更高效。然而&#xff0c;有些人担心超声波清洗机会对眼镜造成伤害。实际上&#xff0c;这种担心是多余的。超声波清洗机在…

Java版直播商城:电商源码、小程序、三级分销及 免 费 搭 建 方案

一、技术选型 java开发语言&#xff1a;java是一种跨平台的编程语言&#xff0c;适用于大型企业级应用开发。使用java开发直播商城可以保证系统的稳定性和可扩展性。 spring boot框架&#xff1a;spring boot是一个快速构建spring应用的框架&#xff0c;简化了开发过程&#xf…

SpringBoot集成Camunda

一&#xff1a;pom.xml 因camunda集成SpringBoot对SpringBoot的版本和JDK的版本都有一定的要求&#xff0c;所以这里贴个完整的依赖。可以去官网找每个SpringBoot的版本对应的camunda版本。 <?xml version"1.0" encoding"UTF-8"?> <project x…

一分钟带你了解深度学习算法

深度学习是一种受到生物学启发的机器学习方法&#xff0c;其目标是通过构建多层神经网络来模拟人脑的工作原理。它在过去几十年来取得了巨大的进展&#xff0c;并在图像识别、语音识别、自然语言处理等领域取得了突破性的成果。 深度学习的核心思想是模仿人脑的神经网络。人脑中…

flex弹性盒子常用的布局属性详解

想必大家在开发中经常会用到flex布局。而且还会经常用到 justify-content 属性实现分栏等等 接下来给大家分别讲一下 justify-content 的属性值。 以下是我敲的效果图大家可以清晰看出区别 space-between 属性值可以就是说两端对齐 space-evenly 属性值是每个盒子之间的…

欧洲编程语言四巨头

从左往右&#xff0c;依次是 尼克劳斯沃斯 (Niklaus Wirth)&#xff0c;迪杰斯特拉&#xff08;Edsger Dijkstra&#xff09;&#xff0c;霍尔&#xff08;Tony Hoare&#xff09; 尼克劳斯沃斯 (Niklaus Wirth) 瑞士人&#xff0c;一生发明了8种编程语言&#xff0c;其中最著…