Go语言交叉编译二进制文件

本文介绍了如何在不同操作系统上使用Golang进行交叉编译,包括macOS、Linux及Windows平台间的相互编译方法。文章详细说明了设置环境变量CGO_ENABLED、GOOS和GOARCH的过程,并针对需要CGO支持的情况提供了特定示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

熟悉golang的人都知道,golang交叉编译很简单的,只要设置几个环境变量就可以了

1

2

3

4

5

6

7

8

9

10

11

# mac上编译linux和windows二进制

CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build

CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build

 

# linux上编译mac和windows二进制

CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build

CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build

 

# windows上编译mac和linux二进制

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

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

GOOS和GOARCH的值有哪些,可以网上搜,很多的

但是交叉编译是不支持CGO的,也就是说如果你的代码中存在C代码,是编译不了的,比如说你的程序中使用了sqlite数据库,在编译go-sqlite驱动时按照上面的做法是编译不通过的

需要CGO支持的,要将CGO_ENABLED的0改为1,也就是CGO_ENABLED=1,此外还需要设置编译器,例如我想在linux上编译arm版的二进制,需要这样做:

1

2

# Build for arm

CGO_ENABLED=1 GOOS=linux GOARCH=arm CC=arm-linux-gnueabi-gcc go build

https://www.jb51.net/article/146168.htm

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值