在 Go 中使用没有源代码的二进制包
分发没有源代码的软件库是一个常见的需求,但是用 Go 可以实现吗?这个问题困扰了许多 Go 开发人员,导致人们探索各种方法。
其中一种尝试是创建时间戳早于二进制包的虚拟源文件。虽然这种方法看起来可行,但如果意外更新虚拟源文件,导致包无效,则会出现潜在问题。
分发源有必要吗?
Go 编译器明确需要源代码和二进制包才能成功编译。缺乏使用 .a 文件的直接规定仅仅引发了为什么 Go 不提供此功能的问题。
go 工具的作用
go工具虽然方便,但不能替代 Go 编译器、链接器或语言本身。该工具促进了构建、测试和打包 Go 代码的过程,但它最终依赖于底层组件来执行繁重的工作。
实用的解决方案
尽管面对挑战,有一个实用的解决方案,允许您在没有完整源代码的情况下分发二进制包:
分发 .a 文件以及时间戳早于二进制包的虚拟源文件。确保所有相关文件都放置在预期位置,然后您的用户可以直接使用编译器通过命令行构建和使用您的包。
关于虚拟源的注意事项
新版本的 go 工具增强了检测能力,要求 src 文件夹中的所有文件都具有正确的文件名和较旧的时间戳,即使它们是空的。这消除了对时间戳管理的需要,使该解决方案更加简单。
以上是Go二进制包可以在没有源代码的情况下分发吗?的详细内容。更多信息请关注PHP中文网其他相关文章!