2017-07-16 123 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也是相关的。

相关问题