Golang Go语言 生成 binary package

虽然 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


Golang Go语言 生成 binary package

更多关于Golang Go语言 生成 binary package的实战教程也可以访问 https://www.itying.com/category-94-b0.html

1 回复

更多关于Golang Go语言 生成 binary package的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


在Golang中,生成binary package(二进制包)通常指的是将Go程序编译成独立的可执行文件。这个过程涉及到使用Go的工具链,特别是go build命令。以下是一个基本的步骤指南:

  1. 编写Go代码:首先,确保你的Go代码已经正确编写并保存在.go文件中。

  2. 设置GOPATH或Go Modules:如果你使用的是Go Modules(推荐方式),确保你的项目在go.mod文件的根目录下。如果使用GOPATH,确保你的代码在$GOPATH/src目录下。

  3. 编写构建脚本(可选):虽然go build命令本身已经非常强大,但有时候你可能需要编写一个构建脚本来处理更复杂的构建逻辑。

  4. 运行go build命令:在项目的根目录下,运行go build -o outputname命令。这里的outputname是你想要生成的二进制文件的名称。如果不指定-o,默认会生成一个与目录名相同的可执行文件(在Windows上是.exe,在其他平台上没有后缀)。

  5. 验证生成的二进制文件:在命令行中运行生成的二进制文件,确保它按预期工作。

  6. 分发:将生成的二进制文件分发给你的用户或部署到目标环境中。

需要注意的是,生成的二进制文件是静态链接的,包含了运行程序所需的所有依赖项(除非使用了cgo等外部库)。这使得Go程序非常易于分发和部署。

回到顶部