我有一个用C编写的程序,该程序使用dlopen加载插件模块。动态加载该库时,它将运行构造函数代码,该结构函数代码使用导出的函数在主应用程序中向函数应用程序注册指向结构的指针。我想使用绝对路径将文件指定为dlopen。
然后,我将程序的其他部分与Takes文件一起使用,确定它是否为ELF,然后查看特定ELF部分的ELF标头,阅读此部分并从中提取相关信息。这样,它仅过滤我之前标记为插件模块的共享库。
但是,我正在解决一个问题,该问题是如何从主程序中即时发现它们(以可移植的Linux方式,即它将也可以在Debian和Fedora上运行)。我一直在考虑为此使用ldconfig。 (因为模块将通过发行版打包系统(例如APT)安装。)除了直接读取/etc/ld.co.cache文件之外,还有什么方法可以通过编程方式从C程序中获取已知库的字符串列表。 ?我当时在想,也许有些头库在我问的时候会给char **。
或者,也许有什么更好的解决方案可以解决我的问题?
(我支持使用标准的系统组件,这些组件将为一次性解决方案编程,将来需要支持。)