golang binary packageの生成

1427 ワード

go 1.5共有ライブラリはサポートされていますが、golangはC言語のようにexport、ヘッダファイルと.Cファイルは分離されているため,C言語と同様にヘッダファイルと共有ライブラリのみを提供し,実装方法を提供しないことは実現できない.
go1.7 binary-packageを導入し,以上のC言語の機能を実現し,バイナリパッケージを提供する.
生成の手順は複雑なので、バイナリパッケージとfakeを生成することができます.go(C言語のヘッダファイルに相当)のgolang-binary-package-generatorツール
How to use it
  • Specify generatedDirs and projectName(which should be the deploy.sh 's parent directory name) in deploy.sh.
  • Execute $ ./deploy.sh
  • Delete your framework implementation and move fakeGoPackagesPath 's fake go files to implementation's position.
  • Pack the .a files for your clients, which should be in $GOPATH/pkg/YourProjectName.

  • 実質的にプログラムは以下の機能を完成した.
  • は、go build -iを用いるバイナリパケットを提供するライブラリをコンパイルして生成する.aファイルは自動的に$GOPATH/pkg/darwin_amd64(linux )の中に入るので、使用前にこのディレクトリをクリアし、生成後にパッケージすればよいことを推奨する.あるいは-oで位置を指定することにより、その時点でユーザ対応の上記フォルダに格納.
  • $GOPATH/src対応するディレクトリは対応するライブラリディレクトリのGoソースファイルに入れて、中は以下の注釈を加えます:
  • //go:binary-only-package
    

    パケットの宣言文package mypkgを保持し、パケットのドキュメント情報を保持する場合はgo docでパケットドキュメントを参照することもできます.
    これによりdeveloperは、以上のsrcの空のソースファイルとpkgのみを通過することができる.aファイルはライブラリのAPIを使用する.
    Reference
  • https://tip.golang.org/pkg/go/build/#hdr-Binary_Only_Packages
  • https://github.com/tcnksm/go-binary-only-package
  • http://ju.outofmemory.cn/entry/256338