V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
ChristopherWu
V2EX  ›  Go 编程语言

golang 生成 binary package

  •  
  •   ChristopherWu · 2016-11-15 18:42:54 +08:00 · 846 次点击
    这是一个创建于 2756 天前的主题,其中的信息可能已经有所发展或是发生改变。

    虽然 go1.5 支持共享库,但是由于 golang 并不能像 C 语言一样通过 export ,头文件与.C 文件分离,所以并不能实现与 C 语言一样,只提供头文件与共享库而不提供实现的方法。

    go1.7 引入了binary-package, 实现了以上 C 语言的功能,提供二进制包。


    生成的步骤比较复杂, 因此我制作了一个可以生成二进制包以及 fake.go(相当于 C 语言的头文件)的golang-binary-package-generator 工具

    How to use it

    1. Specify generatedDirs and projectName(which should be the deploy.sh 's parent directory name) in deploy.sh.
    2. Execute $ ./deploy.sh
    3. Delete your framework implementation and move fakeGoPackagesPath 's fake go files to implementation's position.
    4. Pack the .a files for your clients, which should be in $GOPATH/pkg/YourProjectName.

    实质上程序完成了以下功能:

    1. 使用go build -i编译需要提供二进制包的库, 生成的.a 文件会自动放在$GOPATH/pkg/darwin_amd64(linux 有相对应文件夹)里面, 推荐在使用前先清空该目录, 生成后打包即可. 或者通过-o 指定位置, 到时候放在用户对应的上述文件夹里.

    2. $GOPATH/src 相应目录放入对应库目录的 Go 源文件,里面加入以下注释:

    //go:binary-only-package
    

    保留包的声明语句 package mypkg , 保留包的文档信息时还可以用 go doc 查阅包文档。


    这样, developer 就可以只通过以上 src 里的空源文件与 pkg 的.a 文件来使用库的 API.


    Reference

    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5129 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 251ms · UTC 06:56 · PVG 14:56 · LAX 23:56 · JFK 02:56
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.