因此,我们从一家供应商那里共享库,该供应商不会在 Linux 或 Android 上以静态存档 .a 格式提供他们的库(但在其他平台上提供),因为他们更改构建过程会很不方便。问题是需要包装线程创建、malloc 和大量其他 api 来解决平台非标准 libc 中的错误。我们使用 LD 执行此操作,使用“--wrap”命令将函数重定向到我们的包装。不幸的是,对于已编译的 .so,我们无法重新链接它。无论如何将 .so 转换为静态存档并重新链接它,甚至重写链接表以将这些调用重定向到我们的包装?
除了拆卸、更改库和重新组装之外,我想不出任何方法可以轻松地做到这一点。