【发布时间】:2022-01-14 14:14:12
【问题描述】:
我正在尝试为我的操作系统编写系统加载程序,但我使用的是 LLVM(clang-cl.exe 和 lld-link.exe)的编译器,因为我的操作系统使用 PE 文件作为本机可执行文件类型。问题是,LLVM 和 MSVC 似乎都没有办法(至少从我能找到的)来创建原始二进制文件(例如,在 nasm 中,您可以使用选项:nasm -f bin <...> 创建“平面”二进制文件)。我不希望系统加载器成为可执行文件。我在想,如果我可以删除可执行文件 headers 并保留这些部分,可能会有办法做到这一点,但我找不到这样做的方法。任何人都知道从可执行映像中去除 headers 的方法吗?
【问题讨论】:
-
当您删除标题并保留部分时,文件的其余部分将不是有效的 PE 文件。
-
@SemihArtan 这是我的目标:它不应该是一个有效的 PE 文件。它应该类似于使用 nasm 汇编器
nasm -f bin创建原始代码文件。
标签: linker bootloader portable-executable