对于一个个人项目,我需要编写一个加载在一个非默认的内存地址的可执行文件。 从这个SO问题 ,我知道我可以为ELF设置的入口地址,使可执行有效地设在一些地址,我选择手动修改部分地址。 然而,得到的答案表明,这是唯一的,如果我不glibc的初始化(我需要为这个项目)的作品,并设置部分记忆我每次编译是困难的时候(更何况枯燥)的地址。
看起来应该有更好的方式来构建时的ELF设置的基址,但我会再打一个脚本做手工生成后,如果需要的话。 此选项ld
将是完美的,如果它是不特定的PE端口:
--image-base value
Use value as the base address of your program or dll. This is the lowest
memory location that will be used when your program or dll is loaded. To
reduce the need to relocate and improve performance of your dlls, each should
have a unique base address and not overlap any other dlls. The default is
0x400000 for executables, and 0x10000000 for dlls. [This option is specific
to the i386 PE targeted port of the linker]
我还没有发现一个ELF等同。 难道没有这样的? 解析ELF文件自己不会是世界末日,但似乎喜欢这个功能应该存在的地方。