Go 仅二进制库不包括依赖项
我试图构建一个只包含一些依赖项的二进制库。仅二进制库本身的构建非常成功,但它实际上并不包括我的依赖项:当我试图在没有安装依赖项的系统上使用该库时,我会收到一个错误,说它们丢失了 作为参考,我用于构建库的命令是:Go 仅二进制库不包括依赖项,go,Go,我试图构建一个只包含一些依赖项的二进制库。仅二进制库本身的构建非常成功,但它实际上并不包括我的依赖项:当我试图在没有安装依赖项的系统上使用该库时,我会收到一个错误,说它们丢失了 作为参考,我用于构建库的命令是: go build-o build/pkg/.a 然后我将存根.go文件写入build/src/.go 存根文件包含所有公共方法的存根实现和其依赖项的import块,每个依赖项都包含在该导入块中 存根文件在package指令上方还有//go:binary-only-package行 如果有
go build-o build/pkg/.a
然后我将存根.go
文件写入build/src/.go
存根文件包含所有公共方法的存根实现和其依赖项的import
块,每个依赖项都包含在该导入块中
存根文件在package
指令上方还有//go:binary-only-package
行
如果有一种方法可以构建一个包含依赖项的二进制库,我将不胜感激 正如您所知,go将包编译成单独的归档文件,并从中创建二进制文件。Go最近允许您只提供没有源代码的存档(如果源代码较新,通常Go将从源代码重新编译) 可以将多个存档合并为一个,如下所述:
问题是go的编译器将使用与包名匹配的文件夹和文件结构查找符号。因此,如果合并存档,go编译器将无法在构建二进制文件时定位符号。根据存档的位置,只有一个包是可定位的。因此,至少在当前的go编译器支持下,不可能完成您的请求。我认为您只能将所需的导入语句添加到二进制文件中stub@JimB:是,我已在存根文件中设置了所需的导入语句。为了清晰起见,编辑问题是有意义的。谢谢你的解释!如果他们最终决定支持您的请求(不确定如何支持),我不会感到惊讶,需要有某种方式来打包库,就像java的“jar”文件或C/C++的组合单一存档一样,这样您就可以轻松地交付库,而无需进一步的步骤。仅构建库功能是新的,因此可能很快就会出现。你可以考虑在Guthub上与戈朗人展开一个问题。