【发布时间】:2021-03-21 07:34:46
【问题描述】:
我有一个第三方库(比如说libfoobar.so),它依赖于另一个名为libutils.so 的第三方库。我只有libutils.so的老版本,他的老版本少了一个新版本才有的符号(导出函数)。
我可以在一个新的共享库中编写函数代码(比如说libwrapper.so):
extern "C" int missing_function() {
return 123;
}
然后……现在??如何“告诉”libfoobar.so 使用此功能,已经尝试过:
- 在
libfoobar.so之前加载libwrapper.so。 - 使用带有
patchelf --add-needed libwrapper.so libfoobar.so的补丁工具。但我得到dlopen failed: empty/missing DT_HASH in "libfoobar.so" (built with --hash-style=gnu?)
由于兼容性原因,我无法使用“新版本”。有什么解决办法吗?
【问题讨论】:
标签: c unix shared-libraries