【发布时间】:2013-09-12 16:20:52
【问题描述】:
在 Linux 上,链接时我可以为一个部分指定任何虚拟地址:
ld -Ttext 0x10000000 -Tdata 0x20000000 foo.o -o foo
但是对于 Windows 的 link.exe,我没有看到这样的选项。
是否可以通过某种方式指定 PE 部分的起始地址?
【问题讨论】:
-
那是因为这样的选项根本不存在。可以在任何 VM 地址加载节,代码和数据引用可在 Windows 上重定位。
-
@HansPassant MinGW ld 可以以某种方式做到这一点。转储此类二进制文件表明它将段放置在基地址 + 段地址。调试这样的过程向我展示了文本和数据在这些地址。我可以使用 MinGW,但如果可能的话,我想使用标准的 MSVC 工具链。
标签: windows linker portable-executable