当前 go 版本 1.9.2 把程序编译成plugin,plugin 里面引用了静态库,这时候编译会报错找不到静态库。 missing or invalid package binary for binary-only package say 但是如果把程序编译成 可执行文件,则可以成功,能找到静态库
1、say.go 文件在/work/golang/src/say 目录下 package say import "fmt" func Say(s string) string { return fmt.Sprintf("hello %s", s) } 2、编译成静态库 go build -i -o $GOPATH/pkg/linux_amd64/say.a
3、修改 say.go 文件为以下内容: //go:binary-only-package
package say
4、另一个文件main.go 在目录 /work/golang/src/test package main import ( "say" ) func main() { fmt.Println(say.Say("Bob")) } 5、go run main.go hello Bob
6、另一个文件test.go 也在目录下 /work/golang/src/test package test import ( "fmt" "say" ) func SayToBob() { fmt.Println(say.Say("Bob")) } 7、运行命令:go build -buildmode=plugin -o plugin.so 会报以下错误 missing or invalid package binary for binary-only package say
有疑问加站长微信联系(非本文作者)

难道是golang 还不支持 在plugin 中import 静态库吗?