Linux:在运行时更改LD_库路径

Linux:在运行时更改LD_库路径,linux,dynamic,load,Linux,Dynamic,Load,我正在为我的应用开发一个简单的插件架构。插件是具有已知get接口函数的共享对象。我通过dlopen/dlsym等相当标准的方式访问.so。 我的一些插件有额外的.so文件需要加载。这些文件可以附带插件,但我需要应用程序知道在哪里/如何加载它们 所以我的问题是:如何将特定插件的目录添加到查找库的位置列表中?我无法在启动应用程序之前设置LD_LIBRARY_路径,因为插件将在稍后加载。或者,我是否需要每个插件在某种清单文件中显式地提供依赖项列表,以便我可以首先使用dlopen加载它们?谢谢 编辑:为

我正在为我的应用开发一个简单的插件架构。插件是具有已知get接口函数的共享对象。我通过dlopen/dlsym等相当标准的方式访问.so。 我的一些插件有额外的.so文件需要加载。这些文件可以附带插件,但我需要应用程序知道在哪里/如何加载它们

所以我的问题是:如何将特定插件的目录添加到查找库的位置列表中?我无法在启动应用程序之前设置LD_LIBRARY_路径,因为插件将在稍后加载。或者,我是否需要每个插件在某种清单文件中显式地提供依赖项列表,以便我可以首先使用dlopen加载它们?谢谢


编辑:为了澄清,插件的目录在启动应用程序之前是未知的,所以我当时无法设置LD_LIBRARY_路径

根据linux在启动应用程序之前评估LD_LIBRARY_PATH,因此它不知道您在运行时所做的任何更改。

您可以并且应该链接您的插件*。因此,将文件与所需的共享库gcc-Wall-O-shared-fPIC plugin.c-lsomelibrary-O plugin.soI我已经这样做了,但问题出现在运行时,因为应用程序环境不知道libsomelibrary.so所在的位置——这是我需要在应用程序启动后能够指定的内容。