[英]How to use/distribute a binary package without Go source code
基本上我的文件夹结构如下:
bin/
pkg/
linux_amd64/
github.com/user/
stringutil.a
src/
github.com/user/
hello/
hello.go (main file)
stringutil/
stringutil.go
hello.go
是从stringutil.go
导入一些函数的stringutil.go
。
运行go install
,在pkg
下创建stringutil.a
(如上所述)。
我的问题是,我可以go install
没有stringutil.go
源的情况下再次运行go install
,因为我已经有了stringutil.a
吗?
我是Java程序员,也是Go的新手。 通常在Java中,在编译期间,我们可以将编译后的jar文件导入到类路径中并进行编译。
我怎么能在Go做同样的事情? 如果我有一个已编译的软件包stringutil.a
,我如何将这个文件分发给某人并让他们使用它而不暴露原始源代码?
您将已编译的包放入错误的文件夹中。
该pkg
你去工作空间的文件夹中包含编译组织成基于目标架构被编译成,例如子包对象linux_amd64
或windows_amd64
。 在其中包含父包的路径,并且直接父文件夹是放置编译的包对象的位置。
检查go install
放置包对象的位置,并镜像该文件夹结构。
因此,例如,如果您的包是path/to/parent/package/abc
并且您编译为linux 64位,则应将其编译的包文件放入如下文件夹:
myworkspace/pkg/linux_amd64/path/to/parent/package/abc.a
或者在Windows 64位的情况下:
myworkspace/pkg/windows_amd64/path/to/parent/package/abc.a
此页面提供了更多详细信息: 如何编写Go代码
笔记:
通过这样做,您将限制编译应用程序的可能目标,因为已编译的包对象仅适用于特定平台。 在Go中分发程序包的首选方法是源代码形式。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.