2017-07-16 119 views
-1

由於特殊原因,我的共享庫(.so文件)必須壓縮到用於C使用的.zip文件中。來自zip文件的動態加載(dlopen)共享庫(.so文件)

是否可以在不更改動態鏈接器的情況下爲C代碼動態加載(dlopen或調用)共享庫(.so)文件形式的.zip文件?

+0

不清楚你在問什麼。你爲C問題添加C++ 11標記的原因是什麼? C++是一種不同的語言。 – Olaf

+0

我的.so文件被壓縮。在這種情況下,是否仍有可能對我的.so文件進行緩衝或調用? – JoJo

+0

[m1m1x/memdlopen](https://github.com/m1m1x/memdlopen)表明理論上*可以通過livepatching libc修改'dlopen'行爲,但總的來說我會說:不,沒有可靠的這樣做的方法。即使Android在安裝時解壓縮'.so'文件,而不是在運行時從'.apk'加載它們,並且它們完全控制了它們自己的運行時和鏈接器。 – ephemient

回答

0

是否可以在不更改動態鏈接器的情況下爲C代碼動態加載(dlopen或調用)共享庫(.so)文件的.zip文件?

IFF您的庫存儲在.zip解壓縮,然後補丁到glibc實現dlopen_with_offset()是不是太硬(我們確實有這樣的本地補丁,也有少數疑難雜症的看出來因爲,這仍然需要修改動態鏈接器)。

這個feature request也是相關的。

相關問題