有没有一种方法可以用一堆源文件用go语言构建二进制文件(共享库或静态库),并将其与接口一起分发。
它不是作为可执行文件发布,而是在编译或运行时具有接口的可链接静态或共享库。 (就像在C中一样,您将.a
或.so
文件与头文件一起分发)
与基于开源github的库不同的是,我正在尝试将其移植到Go中。
答案 0 :(得分:1)
是可以的。您可以将代码构建为静态库,并在运行时使用以下命令将其链接:
go build -buildmode=plugin
您可以使用这样的内置插件:
符号是指向变量或函数的指针。
例如,一个定义为
的插件package main
import "fmt"
var V int
func F() { fmt.Printf("Hello, number %d\n", V) }
可以加载打开功能,然后可以访问导出的软件包符号V和F
p, err := plugin.Open("plugin_name.so")
if err != nil {
panic(err)
}
v, err := p.Lookup("V")
if err != nil {
panic(err)
}
f, err := p.Lookup("F")
if err != nil {
panic(err)
}
*v.(*int) = 7
f.(func())() // prints "Hello, number 7"
type Symbol interface{}
在go中查看对Plugin的内置支持