Go交叉编译

2019-04-18

查看操作系统平台和内核版本:uname -a

Mac 下编译 Linux 和 Windows 64位可执行程序

Linux 下编译 Mac 和 Windows 64位可执行程序

Windows 下编译 Mac 和 Linux 64位可执行程序

Mac 编译 Linux 32位可执行程序

CGO_ENABLED = 0 交叉编译不支持 CGO 所以要禁用它。

GOOS:目标平台的操作系统(darwin、freebsd、linux、windows)

GOARCH:目标平台的体系架构(386、amd64、arm)

CGO是一个令人惊异的技术,它允许Go与C的类库交互操作,让Go能够使用 C语言 积累的各种资源。

对于使用CGO的程序,大部分情况可以通过配置$CC参数使用自行准备的交叉编译工具进行编译。

其中$CC参数指定的是ARM工具链位置。

目前解决CGO跨平台编译问题的思路有:

– 用目标平台的工具链进行交叉编译

– 用原生代码重写CGO实现的功能,当然这是一句废话:small: