`

go如何进行交叉编译

 
阅读更多

golang交叉编译
问题
golang如何在一个平台编译另外一个平台可以执行的文件。比如在mac上编译Windows和linux可以执行的文件。那么我们的问题就设定成:如何在mac上编译64位linux的可执行文件。
解决方案
golang的交叉编译要保证golang版本在1.5以上,本解决方案实例代码1.9版本执行的。
我们想要编译的文件hello.go
hello.go
package main

import "fmt"

func main() {
    fmt.Printf("hello, world\n")
}

在mac上编译64位linux的命令编译命令
bash:
GOOS=linux GOARCH=amd64 go build hello.go

上面这段代码直接在命令控制台里面运行就可以生成64位linux的可执行程序。
参数解析
这里用到了两个变量:

GOOS:目标操作系统
GOARCH:目标操作系统的架构




OS
ARCH
OS version




linux
386 / amd64 / arm
>= Linux 2.6


darwin
386 / amd64
OS X (Snow Leopard + Lion)


freebsd
386 / amd64
>= FreeBSD 7


windows
386 / amd64
>= Windows 2000



编译其他平台的时候根据上面表格参数执行编译就可以了。
扩展阅读
在网络上的诸多教程中可能会看到下面的编译命令
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build hello.go

其中CGO_ENABLED=0的意思是使用C语言版本的GO编译器,参数配置为0的时候就关闭C语言版本的编译器了。自从golang1.5以后go就使用go语言编译器进行编译了。在golang1.9当中没有使用CGO_ENABLED参数发现依然可以正常编译。当然使用了也可以正常编译。比如把CGO_ENABLED参数设置成1,即在编译的过程当中使用CGO编译器,我发现依然是可以正常编译的。
实际上如果在go当中使用了C的库,比如import "C"默认使用go build的时候就会启动CGO编译器,当然我们可以使用CGO_ENABLED=0来控制go build是否使用CGO编译器
注意:涉及文件夹访问权限,用户组权限需注意

 

分享到:
评论

相关推荐

    golang 交叉编译MinGW x64

    在本文中,我们将深入探讨如何使用Golang进行交叉编译,特别是针对MinGW x64环境。交叉编译是开发过程中的一个重要环节,它允许我们在一个平台上构建可以在其他平台上运行的程序。对于Golang,其内置的交叉编译功能...

    golang的交叉编译

    本文将深入探讨Go语言的交叉编译,并结合在Windows平台上编译Linux文件的实际操作进行讲解。 一、理解交叉编译 交叉编译是指在一个平台上生成可以在另一个平台上运行的代码。在Go语言中,由于其内置了对多种架构的...

    golang交叉编译

    只是一个简单的386和amd64的交叉编译的批处理文件。对入门者有用

    armv8-Liunx交叉编译工具.rar

    1. **GCC (GNU Compiler Collection)**:这是交叉编译的核心,能够处理C、C++、Objective-C、Fortran、Ada和Go等多种编程语言。在ARMv8环境下,GCC将源代码转换为目标机器码,支持特定的体系结构和指令集。 2. **...

    海思v400交叉编译工具

    1. **GCC(GNU Compiler Collection)**:这是开源的编译器套件,包括C、C++、Objective-C、Fortran、Ada和Go等语言的编译器。在海思V400的场景中,GCC将源代码转换为V400架构可执行的机器码。 2. **LD(Linker)**...

    GCC交叉编译工具链4.9.4

    标题中的“GCC交叉编译工具链4.9.4”指的是一个特定版本的GCC(GNU Compiler Collection),这个版本是4.9.4,用于进行跨平台编译。 GCC,全称GNU Compiler Collection,是由GNU项目开发的一套开源编译器套件,支持...

    ARMV5tej GCC 交叉编译工具链

    ARMV5tej GCC 交叉编译工具链是专为在Windows Subsystem for Linux (WSL) 上构建针对ARMV5te架构应用的开发者设计的重要工具。它包含了GCC(GNU Compiler Collection)版本8.1.0,这是一个强大的、开源的编译器套件...

    Go-gox-简单要死的交叉编译工具

    gox -简单要死的交叉编译工具

    交叉编译工具

    解压后,用户将得到一个包含编译器二进制文件、库、头文件和其他相关资源的目录结构,这些可以被添加到开发环境的路径中,以便在主机上进行交叉编译。 在实际开发过程中,使用交叉编译工具时,需要确保编译选项正确...

    cc.bat Go安装交叉编译器

    接下来,我们来详细探讨如何使用`cc.bat`进行Go语言的交叉编译: 1. **下载和安装**:首先,你需要确保已经安装了Go语言的本机编译器。可以从官方站点下载最新版本的Go并按照指示进行安装。然后,运行`cc.bat`脚本...

    arm-linux-gcc-4.4.3.tar.gz混合交叉编译解压包

    3. **GCC (GNU Compiler Collection)**:GCC是GNU项目的一部分,它包含了C、C++、Objective-C、Fortran、Ada和Go等多种编程语言的编译器。在嵌入式开发中,GCC常用于构建跨平台的编译工具链。 4. **混合交叉编译**...

    arm-linux-gcc-5.4.0交叉编译工具.rar

    ARM-Linux-GCC 5.4.0 是一个专门用于在ARM架构的Linux系统上进行编译的交叉编译工具链。它允许开发者在非ARM平台(如x86架构的个人电脑)上构建适用于ARM处理器的应用程序和库。这个版本的交叉编译器对于那些需要...

    golang-cross:使用CGO的golang交叉编译器

    Docker容器可对包含cgo支持的go软件包进行交叉编译(Linux,Windows,macOS,ARM,ARM64)。 Docker映像 在Docker Hub上找到它 docker pull goreng/golang-cross docker pull goreng/golang-cross-builder 建立自己...

    Golang如何交叉编译各个平台的二进制文件详解

    主要给大家介绍了关于Golang如何交叉编译各个平台的二进制文件的相关资料,并介绍了golang如何让编译生产的二进制文件变小,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    gcc-linaro的交叉编译资源.tar.gz

    《GCC-Linaro交叉编译资源详解》 在软件开发领域,尤其是针对嵌入式设备或特定硬件平台的开发,交叉编译是一项重要的技术。...理解和掌握交叉编译技术,对于进行跨平台开发的工程师来说至关重要。

    arm linux 交叉编译工具gcc-4.8.3

    使用GCC-4.8.3进行交叉编译** 使用命令行工具调用交叉编译器,如`arm-linux-gcc-4.8.3`,编译源代码时需要指定目标架构和相关选项。例如: ```bash arm-linux-gcc-4.8.3 -march=armv7-a -mtune=cortex-a9 -o my_...

    arm linux 交叉编译工具gcc-4.6.4

    7. **构建过程**:在进行交叉编译时,开发者需要确保所有依赖库和头文件都针对目标平台。源代码被编译成中间格式,然后链接成可执行文件。这个过程中,编译器会使用目标平台的架构信息,以生成适应其指令集的代码。 ...

    arm gcc 交叉编译工具

    这个交叉编译工具集基于开源的GCC,特别为ARM架构进行了优化和定制。 交叉编译的核心概念是,它在一个平台上编译代码,但生成的可执行文件是在另一个不同的平台上运行的。在这种情况下,ARM GCC在非ARM系统(如...

    Hyperscan 在鲲鹏服务器上进行版本编译的指导

    Hyperscan 在鲲鹏服务器上进行版本编译的指导 Hyperscan 是一款来自于 Intel 的高性能正则表达式匹配库。它是以 PCRE 为原型开发的,具有高性能和高scalability的特点。以下是 Hyperscan 在鲲鹏服务器上进行版本...

    ARM9 S3C2410 交叉编译工具链3.4.4

    5: 编译 GCCGCC(GNU Compiler Collection)是用于编译 C、C++、Objective-C、Fortran、Ada、Go等语言的编译器集合。在我们的环境下,我们将为 ARM 架构的 S3C2410 芯片编译 GCC。# cd ../btools# tar –jxvf gcc-...

Global site tag (gtag.js) - Google Analytics