我试图确保在4gb的物理内存中有一个特定的二进制负载。在ld选项中我看到了——图像库。文件上说:
[此选项特定于链接器的i386 pe目标端口]
在Linux上,如果我使用这个选项,它会显示无法识别的选项'--image base'。
有什么方法可以确保在Linux上加载的特定二进制文件低于4GB吗?
最佳答案
我试图确保在4gb的物理内存中有一个特定的二进制负载。
假设您讨论的是用户级(应用程序)代码,而不是Linux内核,那么您就不能确保物理内存的任何内容。你只能确保一些关于虚拟内存的东西。
如果您使用的是32位系统,您的问题也毫无意义,因为这样的系统上的所有内存都低于4GB。
因此,您的问题似乎是:“如何在64位Linux系统上链接可执行文件,使其加载到0x100000000
?”
假设您使用的是x86_64
,那么答案是:默认链接选项已经对主可执行文件(尽管不是对共享库)执行了,所以您不需要做任何特殊的事情。如果希望所有代码都加载到4GB边界下,请使用-static
标记链接应用程序(但请注意:由于各种原因,这样做可能不起作用,并对二进制文件施加许可限制)。
关于linux - 在Linux中使用--image-base确保程序加载低于4 GB,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11463070/