插件库是否有标准/可接受的方法来识别其在磁盘上的位置?

插件库是否有标准/可接受的方法来识别其在磁盘上的位置?

我正在开发一个具有插件架构的 C 程序。我们构建并打包这两个.rpm.deb

某些插件具有附加的非二进制资源,例如仅适用于该插件的图像文件或脚本文件。这些附加资源位于与插件文件相同的目录中.so。因此,插件需要知道它们在磁盘上的位置,并且在同一目录中,才能打开关联的文件。

是否有一个标准的,或者至少是或多或少惯用的方法来做到这一点?

请注意,我对诸如 之类的硬编码路径持谨慎态度/usr/lib/<foo>/plugins,特别是因为某些发行版喜欢使用/usr/lib64vs /usr/lib

此外,在开发过程中,程序(和/或插件)未安装在标准位置。它们在用户主文件夹中的源代码子目录中执行,并且在这些情况下,插件文件夹与正在开发的二进制文件的相对位置略有不同。

编辑:举个具体的例子,项目的源代码树foo有一个plugins目录。一些附带的标准插件foo都保存在该plugins目录中。插件之一pyconsole依赖于foo_pycon.py,它也在plugins\pyconsole\目录中。

在开发过程中,我的主目录中可能有多个存储库副本,用于不同分支上的不同工作。一份工作副本可能位于~\src\foo_branch\.

foo我调用本地构建的by:实例~\src\foo_branch\release_x86_64\bin\foofoo将所有插件放在相对子目录中,包括~\src\foo_branch\release_x86_64\lib\plugins\pyconsole.so.

是否有标准或惯用的方法让这个特定实例pyconsole.so知道它所在的位置,以便它可以打开并使用自己的foo_pycon.py

请注意,通过软件包安装时,相对路径可能不同。 as/usr/bin/foo是安装的二进制文件的位置,我们将插件安装在/usr/lib[64]/foo/plugins.

相关内容