【发布时间】:2016-10-13 02:31:49
【问题描述】:
全部都是 c 代码,我有一个 linux Gnome 进程,它可能会加载两个库 libA.so 和 libB.so。
libA 需要导出一个全局变量 int varA。
只有当 libA 存在于进程中时,libB 才需要访问 varA。
如何在以下约束条件下做到这一点:
libB 不应链接到 libA。此外,该进程可能只加载 libB 而从不接触 libA。我不控制流程,因此流程源代码中不应存在任何代码。只允许 libB 中的代码:它需要检查进程中是否存在 libA,如果是,则需要访问 varA。如果 libA 不存在,libB 应该知道它无法访问 varA。
我正在考虑使用 g_module_open / g_module_symbol,但我认为它会强制加载我不想加载的 libA。如果 libA 存在,我如何以编程方式在 libB 中检查,然后仅在这种情况下访问 varA?
【问题讨论】:
标签: linux shared-libraries gnome dynamically-generated