【发布时间】:2013-02-07 22:25:19
【问题描述】:
我遇到了第三方库(例如,TP.so)使用不正确的库版本(例如,GenericV1.so)而不是使用它应该使用的库版本(例如,GenericV2.so)的问题。额外的库包含在我的程序中使用。
对此的直接解决方案(在 SO 上有详细记录)是使用带有 RTLD_DEEPBIND 标志的 dlopen()。但该标志仅在 Linux 上有效,在 HP-UX、Solaris、AIX 等其他平台上无效。
在这些非 Linux 平台上使用 RTLD_DEEPBIND 是否有替代方案?
感谢您的回复
【问题讨论】:
-
我认为问题应该是“如何以兼容 POSIX 的方式替换 RTLD_DEEPBIND?”这将导致您的问题独立于平台实现。
标签: c++ shared-libraries cross-platform posix loading