2016-12-29 64 views
0

因此,我在Linux上交叉编译了Windows上的Go代码(10),而且我实际上能够在Windows和Linux上运行相同的可执行文件,这怎么可能?在windows上运行编译后的代码

+0

本地运行Linux ELF可执行文件,你的意思是你跑在linux上的.exe文件,Windows上的Linux二进制,或者你想知道如何去编译X-platform?因为X平台编译不是新的...... C被设计为可移植的,如果你坚持使用标准,也可以为任何系统编译相同的代码 –

+0

你应该关注的是运行时运行时的工作方式,它做了什么。简而言之:将其运行时的大部分编译到每个二进制文件中。检查'GOROOT'文件,你会发现操作系统特定的源文件。其中一些将处理像goroutines和内存管理的事情。如果你可以编译特定于操作系统的怪癖到一个单一的二进制文件中,并且你有一个编译器知道如何用windows,linux和BSD可以理解的格式吐出可执行文件,那么你完全有能力使用X - 编译用户代码 –

+0

是的我在windows上执行linux二进制文件,linux二进制文件在windows上进行了交叉编译为linux编译的代码不能在windows上运行 –

回答

1

这会是新Windows Subsystem for Linux(WSL),它可以在Windows 10

+0

但是默认情况下不启用? –

+0

据我所知,它是一个开发工具,默认情况下不启用。您还必须从Powershell窗口启动bash才能启动完整的Ubuntu系统来执行ELF二进制文件。这不是幕后发生的事情。让我知道如果我错了。 –

相关问题