`
vyloy
  • 浏览: 80673 次
  • 性别: Icon_minigender_1
  • 来自: 佛山
社区版块
存档分类
最新评论

交叉编译Go

阅读更多
引用

Thanks to kind and patient help from golang-nuts, recipe is following:

1) One needs to compile Go compiler for different target platforms and architectures. This is done from src folder in go installation. In my case go installation is located in /usr/local/go thus to compile a compiler you need to issue make utility. Before doing this you need to know some caveats.

There is an issue about CGO library when cross compiling so it is needed to disable CGO library.

Compiling is done by changing location to source dir, since compiling has to be done in that folder

cd /usr/local/go/src
then compile Go compiler:

sudo GOOS=windows GOARCH=386 CGO_ENABLED=0 ./make.bash --no-clean
You need to repeat this step for each OS and Architecture you wish to cross compile by changing GOOS and GOARCH parameters.

If you are working in user mode as I do, sudo is needed because go compiler is in the system dir, otherwise you need to be logged in as super user. On Mac you may need to enable/configure SU access (it is not available by default), but if you have managed to install go you possibly already have root access.

2) Once you have all cross compilers built, you can happily cross compile your application by using settings for example:

GOOS=windows GOARCH=386 go build -o appname.exe appname.go

GOOS=linux GOARCH=386 CGO_ENABLED=0 go build -o appname.linux appname.go
Change GOOS and GOARCH to targets you wish to build.

If you encounter problem with CGO include CGO_ENABLED=0 in the command line, also note that binaries for linux and mac have no extension so you may add extension for the sake of having different files. -o switch instructs go to make output file similar to old compilers for c/c++ thus above used appname.linux can be any other extension.



set GOARCH=amd64
set GOOS=linux
go tool dist install -v pkg/runtime
go install -v -a std

引用

It tells you it needs all tools built before you can use them.

If your windows GOARCH is amd64, then you could "build" all required tools by running this small batch programs:

set GOARCH=amd64
set GOOS=linux
go tool dist install -v pkg/runtime
go install -v -a std
If that succeeds then you should be able to do what you've described (just use amd64, not AMD64 - it is case sensitive).

If your windows GOARCH is 386, then you would need to build your 386 tools first. You would need to download mingw gcc for that. Do what user2714852 said.

Here https://code.google.com/p/go-wiki/wiki/WindowsCrossCompiling are similar instructions for linux, perhaps you find them helpful.

Alex



作者:翁志艺
分享到:
评论

相关推荐

    golang 交叉编译MinGW x64

    3. **设置Go交叉编译**:在Golang环境中,你可以通过设置`GOOS`和`GOARCH`环境变量来指定目标操作系统和架构。对于Windows x64,你应该设置`GOOS=windows`和`GOARCH=amd64`。你也可以通过在命令行中直接使用`go ...

    armv8-Liunx交叉编译工具.rar

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

    arm linux 交叉编译工具gcc-4.8.3

    GCC(GNU Compiler Collection)是GNU项目的一部分,是一个开源的、多平台的编译器套件,支持C、C++、Objective-C、Fortran、Ada、Go等多种编程语言。GCC 4.8.3是其中的一个版本,发布于2014年,包含了对C11、C++11...

    golang交叉编译

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

    海思v400交叉编译工具

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

    golang的交叉编译

    在Go语言中,交叉编译是一项强大的特性,允许开发者在一种操作系统上编译程序,然后在另一种操作系统上运行。本文将深入探讨Go语言的交叉编译,并结合在Windows平台上编译Linux文件的实际操作进行讲解。 一、理解...

    GCC交叉编译工具链4.9.4

    GCC,全称GNU Compiler Collection,是由GNU项目开发的一套开源编译器套件,支持多种编程语言,包括C、C++、Objective-C、Fortran、Ada以及Go等。它不仅包含编译器,还有链接器、预处理器和其他相关工具,为开发者...

    ARMV5tej GCC 交叉编译工具链

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

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

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

    交叉编译工具

    GCC是GNU项目的一部分,它支持多种编程语言,如C、C++、Objective-C、Fortran、Ada和Go等,同时能够生成适用于各种处理器架构的目标代码。 ARM架构是一种广泛应用于移动设备、嵌入式系统和个人电脑的RISC(精简指令...

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

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

    wercker-box-gox:用于 mitchellhgox 的 Wercker box,并行交叉编译 golang 项目

    Wercker box gox 这是其上安装盒 ,交叉编译golang项目平行。 构建工具链需要很长时间,所以我们应该将其预先安装为box用法在应用程序的wercker.yml ,使用以下步骤定义: box : tcnksm/gox@1.4.2盒子细节此框基于 ...

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

    GCC(GNU Compiler Collection)是GNU项目的一部分,提供了C、C++、Objective-C、Fortran、Ada和Go等多种语言的编译器。Linaro是一家非营利组织,专注于优化和提供开源软件栈,特别是针对ARM架构。GCC-Linaro是...

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

    1. **GCC (GNU Compiler Collection)**:这是主要的编译器,可以处理C、C++、Fortran、Ada和Go等编程语言。在ARM-Linux环境下,它能够生成针对ARM指令集的二进制代码。 2. **Glibc**:这是GNU C库,提供了许多标准C...

    一个非常简单、没有多余功能的 Go 交叉编译工具.zip

    一个非常简单、没有多余功能的 Go 交叉编译工具Gox - 简单的 Go 交叉编译Gox 是一款简单、实用的 Go 交叉编译工具,其行为与标准非常相似go build。Gox 将并行构建多个平台。Gox 还将为您构建交叉编译工具链。安装要...

    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-...

    Go-Bins用于为需要交叉编译的Golang二进制文件提供服务

    它简化了构建和分发Golang二进制文件的过程,使得最终用户无需安装Go语言环境,也无需关心不同操作系统和架构下的编译工作。这极大地提升了软件的可移植性和用户体验。 Go语言的一大特性是支持跨平台编译,通过简单...

    arm linux 交叉编译工具gcc-4.6.4

    2. **GCC(GNU Compiler Collection)**:GCC是GNU项目的一部分,是一个开源的编译器套件,支持多种编程语言,如C、C++、Objective-C、Fortran、Ada和Go等。在交叉编译环境中,GCC扮演着关键角色,因为它可以生成...

    wercker-step-gox:mitchellhgox的Wercker步骤,并行交叉编译golang项目

    这是交叉编译golang项目步骤。 用法 在应用程序的wercker.yml ,使用以下步骤定义: steps: - tcnksm/gox 此步骤将生成二进制文件至${WERCKER_OUTPUT_DIR}/pkg/{{.OS}}_{{.Arch}}/{{.Dir}} 。 选项 您可以使用...

    arm gcc 交叉编译工具

    ARM GCC(GNU Compiler Collection for ARM)是GNU项目的一部分,由GNU社区维护,支持C、C++、Fortran、Ada和Go等多种编程语言。这个交叉编译工具集基于开源的GCC,特别为ARM架构进行了优化和定制。 交叉编译的核心...

Global site tag (gtag.js) - Google Analytics