gpt4 book ai didi

go - 仅二进制库不包括依赖项

转载 作者:IT王子 更新时间:2023-10-29 02:09:45 26 4
gpt4 key购买 nike

我正在尝试构建一个包含一些依赖项的纯二进制库。仅二进制库本身的构建非常好,但它实际上并不包括我的依赖项:当我尝试在没有安装依赖项的系统上使用该库时,我收到一条错误消息,说它们丢失了。

作为引用,我用来构建库的命令是:

go build -o build/pkg/<os>_<arch>/<path/to/binary>.a

然后我写 stub <library>.go归档到build/src/<path/to/binary>.go .

stub 文件包含所有公共(public)方法的 stub 实现和一个import。对其依赖项的 block ,每个依赖项都包含在该导入 block 中。

stub 文件也有 // go:binary-only-package package 上方的行指令。

如果有一种方法可以构建一个包含其依赖项的二进制库,我将不胜感激!

最佳答案

如您所知,go 将包编译成单独的存档文件并从中创建二进制文件。 Go 最近允许您仅提供没有源代码的文件(如果源较新,通常 go 会从源重新编译)。

可以将多个存档合并为一个,如下所述:

How to merge two "ar" static libraries into one

问题是 go 的编译器将使用与包名称匹配的文件夹和文件结构来查找符号。因此,如果您合并存档,go 编译器将无法在构建二进制文件时定位符号。根据存档的位置,只有一个包是可定位的。因此,至少在当前的 go 编译器支持下,不可能执行您的请求。

关于go - 仅二进制库不包括依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50613291/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com