1

我试图确保在 4 GB 的物理内存中加载特定的二进制文件。在 LD 选项中,我看到了 --image-base。文档说:[此选项特定于链接器的 i386 PE 目标端口]

在 Linux 上,如果我使用此选项,它会显示无法识别的选项“--image-base”。

有什么方法可以确保特定二进制文件在 Linux 上加载到 4 GB 以下?

4

1 回答 1

2

我试图确保在 4 GB 的物理内存中加载特定的二进制文件。

假设您谈论的是用户级(应用程序)代码,而不是 Linux 内核,则您无法确保与物理内存无关。您只能确保有关虚拟内存的某些信息。

如果您使用的是 32 位系统,您的问题也毫无意义,因为此类系统上的所有内存都低于 4GB。

因此,您的问题似乎是:“如何链接 64 位 Linux 系统上的可执行文件,以便它在下面加载0x100000000?”

假设您使用x86_64的答案是:默认链接选项已经对主要可执行文件执行此操作(尽管不适用于共享库),因此您不需要做任何特别的事情。如果您希望在 4GB 边界下加载所有-static代码,请将您的应用程序与标志链接(但请注意:这样做可能由于各种原因而无法正常工作,并且还会对您的二进制文件施加许可证限制)。

于 2012-07-15T05:50:29.800 回答