在Windows机器上转IDE,但在Linux机器上测试/运行应用程序?

时间:2014-03-23 21:39:47

标签: ide go

我正在使用Go开始我的第一步。

我的工作站在Windows上,我使用JetBrains IDE进行开发。通常,我已将网络磁盘(通过SSH)安装到Linux机器上。这种环境非常适合使用PHP,Javascript(for Node),Python等解释语言进行编码和调试。但对于像Go这样的编译语言来说,这绝对是丑陋的。

使用Go插件为IntelliJ IDEA编写Go代码。是否可以为此插件定义远程Go编译器(将在远程Linux机器上运行)?

2 个答案:

答案 0 :(得分:2)

由于Go是一种编译语言,因此这种开发设置并不像脚本语言那么容易。要在Windows下编译Linux二进制文件,必须设置交叉编译环境。您可以从golang.org下载的二进制包仅支持它们运行的​​平台(即Windows编译器仅生成Windows二进制文件),因此您必须从源代码编译Go。 This blog post对交叉编译做了很好的介绍 - 请务必阅读"警告"部分,以防万一这些适用于您的情况。按照文章中的描述构建Go后,您将拥有"克隆" "去"名为" go-linux-amd64" (" go- [os] - [architecture]"),您可以使用它来编译其他平台的二进制文件。

编辑:Dave Cheney撰写了another blog post关于Go 1.5(将于8月到期)提供的大大改进的交叉编译。

答案 1 :(得分:0)

您可以考虑即将推出的Go 1.5(2015年第3季度),这将使所有交叉编译过程更加简单。
考虑到它完全基于Go,“交叉编译环境”更容易获得。

Dave Cheney详细介绍了“Cross compilation just got a whole lot better in Go 1.5”中的新闻 )

  

要成功进行交叉编译,您需要

     
      
  • 目标平台的编译器,如果它们与您的主机平台不同,即您使用的是darwin / amd64(6g)并且您想为linux / arm(5g)编译。
  •   
  • 目标平台的标准库,其中包含在构建Go分发时生成的一些文件。
  •   
     

计划在1.5版本中翻译Go compiler into Go即将实现,第一个问题现已解决。

package main

import "fmt"
import "runtime"

func main() {
        fmt.Printf("Hello %s/%s\n", runtime.GOOS, runtime.GOARCH)
}
  

为darwin / 386构建

% env GOOS=darwin GOARCH=386 go build hello.go
# scp to darwin host
$ ./hello
Hello darwin/386
  

或者为linux / arm构建

% env GOOS=linux GOARCH=arm GOARM=7 go build hello.go
# scp to linux host
$ ./hello
Hello linux/arm