【GO】在macOS上交叉编译

简介: go语言开发过程中经常会遇到"在macOS上开发",可执行程序在Linux上运行的场景,这样就需要用到交叉编译了

背景

go语言开发过程中经常会遇到"在macOS上开发",可执行程序在Linux上运行的场景,这样就需要用到交叉编译了;

一般web项目

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

即可完成go build;
注意:
执行 export CGO_ENABLED=0,export GOOS=linux,export GOARCH=amd64 后,
再执行go build main.go不能完成编译,需要将其写成一行

需要用到CGO_ENABLED的项目,例如含有sqllite3的依赖

GOOS=linux CGO_ENABLED=1 GOARCH=amd64 CC=/Users/leon/go/gcc-4.8.1-for-linux64/bin/x86_64-pc-linux-gcc CGO_LDFLAGS="-static" \
        go build -o custom_preject_name ./cmd
  1. 将CGO_ENABLED设置为1
  2. CC默认是"clang",需要改成gcc-4.8.1-for-linux64,由于没有这个包,则手动下载到本地,指名路径即可;
  3. 加上 CGO_LDFLAGS="-static"

gcc-4.8.1-for-linux64 下载地址:
百度网盘
提取密码: qs8w

相关文章
|
Go Windows
Go 交叉编译 跨平台编译(windows系统跨平台编译)
Go 交叉编译 跨平台编译(windows系统跨平台编译)
88 0
|
5月前
|
Linux 测试技术 编译器
在go程序中的交叉编译
【7月更文挑战第9天】本文介绍Go 交叉编译允许在一种平台上构建适用于多平台的二进制文件。`go build -cover`用于覆盖率分析,`-coverpkg`控制分析的包范围,生成的二进制文件运行后,覆盖率数据会写入`GOCOVERDIR`指定的目录。
219 14
在go程序中的交叉编译
|
2月前
|
Linux C语言 iOS开发
MacOS环境-手写操作系统-06-在mac下通过交叉编译:C语言结合汇编
MacOS环境-手写操作系统-06-在mac下通过交叉编译:C语言结合汇编
31 0
|
6月前
|
Rust Linux iOS开发
Rust 交叉编译 macOS 为 Linux 和 Windows
Rust 交叉编译 macOS 为 Linux 和 Windows
272 0
|
Linux Go
go 交叉编译(linux)
go 交叉编译(linux)
47 0
|
Linux Go iOS开发
Golang:交叉编译到Linux、macOS、windows并运行
Golang:交叉编译到Linux、macOS、windows并运行
491 0
|
Dragonfly Unix Java
Go语言交叉编译,跨平台执行
Go语言编写的程序交叉编译后就可以在各操作系统执行,非Java或Python依赖虚拟机,Go编译后不依赖虚拟机。
245 0
|
SQL Ubuntu Go
go在ubuntu交叉编译windows应用.cgo错误
交叉编译cgo项目是出了名的困难,也是众所周知的GoReleaser的limitation。我建议您查看一下cgo cookbook,如果您还没有这样做的话。
1445 0
|
Unix Linux 编译器
Gox : 简单实在的Go平台交叉编译工具
Gox 是一个简单的,不花俏的Go平台交叉编译工具,它的用处就和标准的 go build 一样。Gox 会并行地为多种平台编译。Gox 同时也提供了一套交叉编译工具链。
878 0
|
Linux Go Windows
go交叉编译参数
一般情况: GOOS=windows GOARCH=amd64 go build -o test.exe 参数解析: GOOS:目标操作系统 GOARCH:目标操作系统的架构 参数表: OS ARCH OS version linux 386 / amd64 / arm >= Linux 2.
2608 0