c – 对于不支持RTLD_DEEPBIND的平台,dlopen()函数中是否有RTLD_DEEPBIND标志的替代?

我有一个第三方库(比如TP.so)使用不正确的库版本(比如GenericV1.so)而不是使用它应该使用的那个(比如GenericV2.so)的问题.附加的库包含在我的程序中.

对此的直接解决方案(在SO上有详细记录)是使用带有RTLD_DEEPBIND标志的dlopen().但该标志仅在Linux上有效,而不是在HP-UX,Solaris,AIX等其他平台上有效.

RTLD_DEEPBIND是否有替代方案可用于这些非Linux平台?

谢谢你的回复

解决方法

在我看来,你根本不需要RTLD_DEEPBIND.您只需要确保以正确的顺序加载具有竞争符号的库.

一些想法:

>您可以使用LD_PRELOAD确保在任何其他库之前加载正确的库(GenericV2.so).>您可以创建一个以正确的顺序对库进行调整的函数:GenericV2.so然后是TP.so.>是否可以确保GenericV1.so永远不会被加载?这个图书馆你需要什么吗?

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...