有没有一种方法可以动态链接具有依赖关系的共享库?
例如,我有两个库,libA.so和libB.so。libB.so调用在libA.so中定义的函数。
在我的主程序中,我希望使用dlopen加载这两个库。但是,如果我尝试:
dlopen(libA.so);
dlopen(libB.so);
然后第二个dlopen会失败,因为libB有未被识别的符号。
我可以想到一些解决方法,比如将所有目标文件构建成一个共享库,或者让libB.so调用dlopen来加载libA.so,但这需要额外的工作。
我猜想这个问题的解决方式类似于内核模块的情况,你可以使用"EXPORT_SYMBOL()"来允许其他模块调用先前加载的模块中定义的函数。
类似的方法是否适用于共享库?还是我必须使用我的解决方案?