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,但不能在主進程中執行。我希望我能。 –