当前位置: 首页 > news >正文

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.lryc.cn/news/278120.html

相关文章:

  • 最新ThinkPHP版本实现证书查询系统,实现批量数据导入,自动生成电子证书
  • windows安装运行Apache James(基于spring的版本)
  • Elasticsearch 基本概念:快速入门指南【记录】
  • 【JVM 基础】类字节码详解
  • 【算法】基础算法001之双指针
  • [力扣 Hot100]Day2 字母异位词分组
  • 记一次 easyswoole 热重载失效复盘 grpc扩展惹的祸
  • 存储过程从表中获取数据库名称
  • .NET 反射的介绍和简单应用
  • 在drawio中使用BPMN2.0绘制详细的业务流程图和编排模型
  • GO——defer函数
  • 【UE Niagara学习笔记】06 - 制作火焰喷射过程中飞舞的火星
  • 机器学习笔记一之入门概念
  • 用于脚本支持的 CSS 媒体查询
  • 【HBase】——整合Phoenix
  • 【操作系统xv6】学习记录5--实验1 Lab: Xv6 and Unix utilities
  • Python从入门到网络爬虫(控制语句详解)
  • transbigdata笔记:数据预处理
  • java中解码和编码出现乱码原因
  • 60V降压3.3V稳压芯片 60V降压5V稳压芯片60V降压12V稳压芯片
  • 01第一个Mybatis程序+引入Junit+引入日志文件logback
  • 音乐制作软件Studio One mac有哪些特点
  • 开源C语言库Melon之日志模块
  • [NOIP2006 提高组] 作业调度方案(修改)
  • uniapp微信小程序投票系统实战 (SpringBoot2+vue3.2+element plus ) -全局异常统一处理实现
  • 浏览器缓存引发的odoo前端报错
  • 如何搭建开源知识库软件AFFiNE并实现公网环境远程协作【内网穿透】
  • 记忆泊车信息安全技术要求
  • 开源分布式任务调度系统DolphinScheduler本地部署与远程访问
  • C++day3作业