go-binary-only-package icon indicating copy to clipboard operation
go-binary-only-package copied to clipboard

Sample of Go1.7 Binary-Only Packages

Sample Binary-Only Packages

Go1.7 introduces Binary-Only Packages. This is sample project (named hello) to create a Binary-Only Pacakage and distribute it as zip file.

How to create?

Actual source code is hello.go in the root directory of this repository. We will not distribute this code.

To create Binary-Only packages, we need prepare 2 files. The one is a special source code file and the other is package binary.

This special source code file is described in doc,

the package must be distributed with a source file not excluded by build constraints and containing a "//go:binary-only-package" comment.

https://tip.golang.org/pkg/go/build/#hdr-Binary_Only_Packages

The example of this source code file is in src/github.com/tcnksm/hello/.

Then, build pacakge binary and place it in pkg/darwin_amd64/github.com/tcnksm/ directory.

$ go build -o pkg/darwin_amd64/github.com/tcnksm/hello.a -x

Finally, zip src and pkg directory,

$ zip -r hello.zip src/* pkg/*

How to distribute?

Share above zip file which doesn't have actual source code.

To use this binary pacakge, just unzip it in $GOPATH,

$ unzip hello.zip -d $GOPATH/