插件是用不同版本的包 crypto/internal/boring 构建的

问题描述

我在 golang 中有一个使用 buildmode 插件代码。我在同一个图像 (goboring/golang:1.15.8b5) 中一个一个地构建主程序和插件。运行主程序时,一旦它尝试加载插件,我就会收到错误消息:

E0319 14:27:38.417362   34123 daemon.go:639] loadvendorPlugins(): fail to load plugin /plugins/my_plugin.so: plugin.Open("/plugins/my_plugin"): plugin was built with a different version of package crypto/internal/boring​

如果我将图像更改为 golang:1.15,则不会发生这种情况。知道为什么会发现一个包的不同版本,即使它们都构建在同一个映像中吗?为什么基础映像可能会对此产生影响?

解决方法

显然,在使用buildmode=plugin的时候,看到这个问题并不奇怪。解决方案是将标志 -trimpath 添加到 go build,如下所述:https://github.com/golang/go/issues/27751#issuecomment-593082117

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...