zoukankan      html  css  js  c++  java
  • go在Linux上编译Windows执行文件

    参考:http://studygolang.com/topics/21

    (1)首先进入go/src 源码所在目录,执行如下命令创建目标平台所需的包和工具文件。

    $ cd /usr/local/go/src
    $ CGO_ENABLED=0 GOOS=linux GOARCH=amd64 ./make.bash

    如果是 Windows 则修改 GOOS 即可。
    $ CGO_ENABLED=0 GOOS=windows GOARCH=amd64 ./make.bash
    ----------------------------------------------------------------------------
    此处可能报错:
    ##### Building Go bootstrap tool.
    cmd/dist
    ERROR: $GOROOT_BOOTSTRAP must not be set to $GOROOT
    Set $GOROOT_BOOTSTRAP to a working Go tree >= Go 1.4.

    解决方法:
    将当前的go复制一份
    #cp -rf go go1.4
    ----------------------------------------------------------------------------


    (2) 现在可以编译 Linux 和 Windows 平台所需的执行文件了。

    $ CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build
    $ CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build

    不过该方式暂时不支持 CGO。

    http://solovyov.net/en/2012/03/09/cross-compiling-go/

    以上假定是64位架构,32位,修改GOARCH为386

    说明:
    这里并不是重新编译Go,因为安装Go的时候,只是编译了本地系统需要的东西;而需要跨平台交叉编译,需要在Go中增加对其他平台的支持。所以,有 ./make.bash 这么一个过程

    交叉编译问题补充:

    首先,建议安装Go语言通过源码安装,否则可能没有make.bash或make.bat程序。

    之所以需要执行上面的这些步骤,是因为安装Go语言时,一些工具和平台相关的代码并没有生成,执行上面的步骤,并不是重新安装Go语言,而是生成交叉编译(目标平台)需要的工具和文件。这些只是在第一次交叉编译的时候做。之后就不需要了。

    为了更快的编译,可以

    ./make.bash --no-clean

  • 相关阅读:
    玩转渗透神器Kali:Kali Linux作为主系统使用的正确姿势TIPS
    知道创宇研发技能表v2.2
    我对什么都感兴趣,可我迷茫了(转载)
    防御性编程
    防御性编程技巧
    移动安全技术如何未雨绸缪?
    1054. 求平均值 (20)
    1053. 住房空置率 (20)
    1052. 卖个萌 (20)
    1051. 复数乘法 (15)
  • 原文地址:https://www.cnblogs.com/Tiago/p/6409533.html
Copyright © 2011-2022 走看看