Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
/usr/lib/golang/src和/usr/lib/golang/pkg之间的关系是什么_Go - Fatal编程技术网

/usr/lib/golang/src和/usr/lib/golang/pkg之间的关系是什么

/usr/lib/golang/src和/usr/lib/golang/pkg之间的关系是什么,go,Go,如果我为Go安装发行版软件包,我会在/usr/lib/golang/pkg中看到很多文件,在/usr/lib/golang/src中看到一组非常类似的文件。这两组之间的关系是什么 pkg是从src中的源代码生成的编译库吗 假设Go程序使用标准包(如fmt),运行Go程序是否需要pkg中的编译库?编译围棋程序需要它吗?编译Go程序需要src中的源代码吗?src 此目录包含组织为包的源文件 包装 此目录包含从src目录Go源代码包编译的Go包对象。如果包不包含带有主包声明的文件,则Go将创建一个包存

如果我为Go安装发行版软件包,我会在/usr/lib/golang/pkg中看到很多文件,在/usr/lib/golang/src中看到一组非常类似的文件。这两组之间的关系是什么

pkg是从src中的源代码生成的编译库吗


假设Go程序使用标准包(如fmt),运行Go程序是否需要pkg中的编译库?编译围棋程序需要它吗?编译Go程序需要src中的源代码吗?

src 此目录包含组织为包的源文件

包装 此目录包含从src目录Go源代码包编译的Go包对象。如果包不包含带有主包声明的文件,则Go将创建一个包存档。pkg目录中的一个文件。包对象在链接时用于在bin目录中创建完整的Go可执行二进制文件

因此,一旦我们编译了一个包,我们就可以在许多可执行文件中链接该对象。喜欢 fmt是pkg中已编译的库,因此无需再次编译。我们可以链接该对象以运行所有Go程序。

Go安装包树包含多个不同的内容:

在pkg/tool树中有Go编译器本身和其他相关工具。这些是特定操作系统架构组合的二进制文件。当然,这对于构建围棋软件是完全必要的。 还将有一个或多个os arch树,其中包含go stdlib的编译库。对于打算进行交叉编译的go安装,这将与pkg/tool中的os-arch组合不同。 pkg/include中还有一些C头文件。 在Go安装src树中有多个不同的内容:

在src/cmd下,有Go编译器和工具的源代码。构建go软件不需要此源。 src中的其他地方是go stdlib的来源。这也是构建软件所必需的。 pkg中的库和可执行文件是从src中的源代码为特定的os-arch组合构建的

这些库不需要构建软件,因为go将从源代码重新构建。可执行文件是必需的,go build系统将使用它们

src中编译器的源代码不是必需的。 至少在所有实际用途中,go stdlib的源代码是必要的。go build将坚持寻找源代码,如果不存在则拒绝构建,即使有合适的编译库可用


从go 1.7到go 1.12只支持二进制软件包,但它被删除。

编译go程序需要src中的源代码吗?当然可以。否则,您必须为所有体系结构和所有操作系统提供整个stdlib的预编译版本;如果您使用的是作为预编译库存在的体系结构和操作系统组合,我认为它是/usr/lib/golang/pkg中的内容,那么该怎么办?来源是否仍然是必要的。您应该从官方来源而不是发行版安装Go。2.stdlib的源代码在src中,编译包在pkg中。3.如果pkg中没有可用的包,则将从src编译该包。4.如果包可用,则不会从源代码编译。5.安装源代码并没有什么错,它使调试和显示文档变得更简单。6.这不是问题,因为go工具可以透明地处理所有这些。7.再一次:使用官方版本。我的定制嵌入式Linux设备没有官方版本,它的SDK是用yocto构建的。这不包括go stdlib的src部分。我想确定这是否真的有必要。Fedora将golang放入src和bin包中,但不清楚如果适当的bin包也可用,是否只需要src来编译软件。大多数(如果不是几乎所有的话)编译语言都不需要标准库的完整源代码来编译任何软件。也许go可以?那么,尝试一下并删除src文件夹有什么不对呢。你为什么现在谈论垃圾箱文件夹?我不熟悉yocto,但由于Go不需要太多东西,如果使用netgo的话,这应该不重要。你在交叉编译吗?你真正想做什么?您遇到了什么问题?这些目录是golang包的一部分,归root所有。显然,用户不会编写任何应用程序,也不会在此处放置任何内容。@TrentP您是说go installed src,对吗?然后我更新了我的ans。