Go 运行时在哪里寻找插件?

Where does the Go runtime look for plugins?

我想使用 Go plugin facility, and if I call plugin.Open("…") with an absolute path, this works fine. Still, the original docs 举个例子 plugin.Open("plugin_name.so"),因此,它也应该使用简单的文件名。

但是,文档没有说明这些插件的搜索路径是什么。是否适用与任何共享库相同的规则? FWIW,将我的插件复制到 /usr/lib 并调用 ldconfig 是不够的。

如果插件路径中未提供绝对路径,则将其视为相对路径,因此始终针对当前工作目录进行解析。所以如果你传递"plugin_name.so",它必须在工作目录中。通常它是可执行二进制文件所在的同一个文件夹,除非二进制文件是从另一个文件夹启动的,或者工作目录在那之后发生了变化。