我有一个 Linux 应用程序,它在运行时加载非常小的(一些小函数)共享库。由于各种重要原因™,我需要将共享库加载到特定的虚拟内存范围。然而,dlopen()
没有提供任何方法(我可以看到)来告诉它或提示它,将其加载的内容放在哪里。
有没有办法告诉dlopen()
它应该把加载的库放在哪里?
有什么替代方案吗dlopen()
哪个可以提供该功能?
我认为如果您愿意修改库,预链接程序实际上可能会演示一种执行此操作的方法。目标是修改库,使其具有首选地址。预链接的目的是为了提高性能,但我怀疑它可以修改以适合您的用例。
请注意,您永远无法保证这种情况会在一般情况下发生,但在受控情况下,您也许能够保证它会发生。
当然,检查 prelink 将使您了解 elf 所涉及的部分,并就其是否可能做出更明智的决定。http://en.wikipedia.org/wiki/Prelink#
Or see http://packages.qa.debian.org/prelinkDebian 中的源代码。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)