当前 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
![go.jpg](https://static.studygolang.com/171213/302d91b000ea67c58a8cf1d60f3980db.jpg)