这是设置:
A有一个加载的应用程序liba.so(在编译时链接)liba.so导出符号expA- 我既不控制
A也不liba.so - 应用程序 A 可以通过(想想插件架构)将我指定的库加载
libmine.so到同一进程中dlopen - 我需要使用
expAfromlibmine.so但不知道如何在没有明确链接到的情况下找到它liba.so,这是我迄今为止一直在做的事情。我认为这在现实世界中行不通,因为不能保证该符号与我的本地副本中的地址相同liba.so(或者是吗?)。libmine.so将是封闭源代码,不能用A.
我从来没有做过这样的事情,所以对库加载的细节有点不清楚。例如,如果我尝试dlopen("liba.so")from inside libmine.so,我会得到一个已加载库的句柄还是一个新副本?
就如何libmine.so加载而言,我所知道的是它将被加载RTLD_LAZY(仅此而已)。
任何帮助和指点将不胜感激!