为什么Go程序需要运行时支持

10
据说Golang是一种编译语言,但是“编译”是什么意思呢?如果将Golang应用程序编译成机器码,为什么我不能只分发二进制文件(当然,需要相应的架构和平台),而要使用"go install"等内容呢?请保留HTML标记。
1个回答

18
一旦您编译出二进制文件,您可以将其分发到相同架构的机器上。 go install, go run, 等仅用于编译。

2
不只是相同的,而是目标一致。我可以在任何电脑上构建,然后在四到五个不同的系统上部署。 - Dustin
"go install/run" 不涉及编译。 - Erikw
1
@Erikw。go install 编译并安装,这是构建非主包的方法。go run在临时位置编译,然后执行生成的二进制文件。 - JimB
@JimB 哦,这是真的。我想的是install在编译时不是必需的;go build就足够了。然而这是无用的,因为编译后的包没有被安装,当$WORK在命令完成后被删除时也会被删除。 - Erikw
1
Go语言的一个独特特性是API以源代码形式分发,而不是以.jar、.dll、.so或其他二进制包的形式。这是可行的,因为Go编译速度非常快。一举解决了可移植性问题,而无需使用虚拟机(如JVM等)。缺点是,生产闭源API相当棘手。 - Rick-777
@Rick-777,“分发API”(代表什么)没有源代码可能稍后实现 - kostix

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接