【发布时间】:2013-11-27 04:49:33
【问题描述】:
通常,用户程序二进制文件将被加载到程序地址空间中的低地址(通常在0x400000 附近),该地址空间将在elf 二进制文件中指定(在linux 的情况下)。
我们能否强制用户二进制文件加载到高地址,可能在加载libc 或其他此类库的地址范围内的2GB 范围内?
我已经尝试在网上找到解决方案,但找不到任何具体的解决方案。
(我正在使用 Ubuntu 12.10 64 位操作系统)
谢谢
【问题讨论】:
-
是否可以让你的二进制文件成为一个共享库,像 libc 一样加载?此链接可能会有所帮助:yolinux.com/TUTORIALS/LibraryArchives-StaticAndDynamic.html。也与这篇文章相关:stackoverflow.com/questions/13107143/…
-
这个线程(gcc.gnu.org/ml/gcc-help/2010-02/msg00212.html) 提到了一些 gcc 选项来更改 .text 部分的起始地址。这就是你想要的吗?
标签: c linux compiler-construction linker ld