golang 在plugin 中import 静态库(//go:binary-only-package)无法编译的问题

twyvip · · 1737 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。

当前 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)

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1737 次点击  
加入收藏 微博
1 回复  |  直到 2017-12-13 07:25:06
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传