Go 插件是用不同版本的包crypto/internal/boring​;

Go 插件是用不同版本的包crypto/internal/boring​;,go,boringssl,Go,Boringssl,我在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_plug

我在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构建中,如下所述:

您所说的“相同图像”是什么意思?你到底是怎么建造的?请创建一个显示您是如何遇到问题的。如果我将构建映像更改为goboring/golang:1.15.8b5,我将得到显示的错误。正如您在Dockerfile中看到的那样,_build-sriov-network-config-daemon和插件都基于相同的映像构建在相同的容器中。这就是为什么我觉得很奇怪