我找不到 Go 依赖于 C 运行时的信息吗?如果依赖的话,是否静态编译成二进制文件,使得Go编写的应用程序可以在任何地方运行而无需依赖?
这里的主题是关于什么是 C 运行时 https://stackoverflow.com/questions/2766233/what-is-the-c-runtime-library
如果您谈论的是 Go 编译器提供的可执行文件,那么答案是“是或否 - 这取决于”:
在大多数情况下,生成的可执行程序不会not依赖于 C 运行时库。
然而,在某些平台上,在某些情况下,C 运行时库会变得动态地链接到.
特别是,当使用 DNS 解析时,Linux 上的 Go 版本 libc执行来处理此类决议。在 1.5 中这已被重新设计 https://golang.org/doc/go1.5#net.
另一种可能的情况是 (IIRC) Solaris,它没有提供直接访问内核系统调用的稳定方法,并且需要通过平台的路由这些呼叫libc http://garrett.damore.org/2015/09/on-go-portability-and-system-interfaces.html.
还有另一种情况:使用cgo
这是 Go 代码与外部 C 代码的接口层。使用cgo
使你的 Go 程序依赖于 C 运行时。请注意,您可能不会使用cgo
直接使用,但您可能正在使用的一个或多个第三方软件包可以使用cgo
,并且——传递性地——你的程序最终取决于 C 运行时库。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)