首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在没有Go源代码的情况下使用/分发二进制包

如何在没有Go源代码的情况下使用/分发二进制包
EN

Stack Overflow用户
提问于 2015-05-26 10:10:27
回答 1查看 1.2K关注 0票数 4

基本上,我的文件夹结构如下:

代码语言:javascript
复制
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中导入一些函数的主程序。

运行go install之后,stringutil.a将在pkg下创建(如上面所示)。

我的问题是,我是否可以在没有stringutil.go源代码的情况下再次运行stringutil.go,因为我已经有了stringutil.a

我是一名Java程序员,刚开始工作。通常在Java中,在编译期间,我们可以将编译好的jar文件导入类路径并进行编译。

我怎么才能在围棋里做同样的事?如果我有一个编译好的包,stringutil.a,我如何将这个文件分发给某个人,让他们在不公开原始源代码的情况下使用它?

EN

回答 1

Stack Overflow用户

发布于 2015-05-26 10:16:56

您将编译的包放入错误的文件夹中。

Go工作区的pkg文件夹包含编译后的包对象,这些包对象根据编译到的目标体系结构组织成子文件夹,例如linux_amd64windows_amd64。在此内部,父包的路径遵循,直接父文件夹是将编译的包对象放入的位置。

检查go install放置包对象的位置,并镜像该文件夹结构。

因此,例如,如果您的包是path/to/parent/package/abc,并且编译为linux 64位,则应该将其编译的包文件放入一个文件夹中,如:

代码语言:javascript
复制
myworkspace/pkg/linux_amd64/path/to/parent/package/abc.a

或者在Windows 64位情况下:

代码语言:javascript
复制
myworkspace/pkg/windows_amd64/path/to/parent/package/abc.a

此页面提供更多详细信息:如何编写Go代码

备注:

通过这样做,您将限制编译应用程序的可能目标,因为编译的包对象仅适用于特定平台。在Go中分发包的首选方法是源代码形式。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30455537

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档