我找不到golang依赖于c运行时的信息吗? 如果依赖它,它是否会在go-binary中静态编译,以使Go-app在任何地方都可以工作而无需依赖?
这是有关什么是C运行时的主题
如果您正在谈论Go编译器提供的可执行文件,那么答案是"是或否取决于":
在大多数情况下,生成的可执行程序不依赖于C运行时库。
但是,在某些情况下,某些平台上的C运行时库会动态链接到。
尤其是在使用DNS解析的情况下,Linux上的Go版本<1.5就是这种情况:运行时取决于平台的
在1.5中已对此进行了重新设计。
另一个可能的情况是(IIRC)Solaris,它没有提供直接访问内核的系统调用的稳定方法,并且需要通过平台的
还有另一种情况:使用
我认为可接受的答案是正确的,但是即使在go 1.10和Unix中,导入" net"包的二进制文件也通常取决于c运行时。
这是简单回显服务器的示例:
编译并检查其依赖性:
如发行说明所示,这是因为"如何运行解析器的决定在运行时适用,而不是在构建时适用"。
为了避免这种依赖性,请使用" netgo"构建标签,如下所示: