1
因此,我们有一个供应商的共享库,它不会在Linux或Android上(但在其他平台上)以静态存档格式以.a格式提供库,因为它们不便于他们更改他们的构建过程。问题是需要包装线程创建,malloc和其他许多apis来解决平台非标准libc中的错误。我们用LD使用“ - wrap”命令将函数重定向到我们的包装。不幸的是,编译.so,我们不能重新链接它。有没有办法将.so转换为静态存档并重新链接它,甚至是重写链接表以将这些调用重定向到我们的包装?重写elf中的链接表
除了拆卸,更改库和重新组装之外,我想不出任何方法可以轻松完成此操作。
'LD_PRELOAD'技巧有帮助吗? – 2013-06-25 18:20:42
,因为在android上,你的启动过程是Zygote进程的分叉,所以你不能使用LD_PRELOAD。您可以在子进程上使用LD_PRELOAD,但不能在主进程中执行。我希望我能。 –