1

我正在使用 Msys 构建我在 Linux 下编写的 home brew 内核。Linux 使用 ELF 作为其二进制格式,而 Msys 使用 PE。我有源设置以允许 Grub 使用 Multiboot 规范启动它。在构建结束时,我得到一些未定义的符号:

init.o:init.S:(.text+0x14): undefined reference to `edata'

main.o:main.c:(.text+0x121): undefined reference to `_alloca'

main.o:main.c:(.text+0x126): undefined reference to `__main'

../../lib\libkern.a(mem.o):mem.c:(.text+0x242): undefined reference to `_end'

../../lib\libkern.a(mem.o):mem.c:(.text+0x323): undefined reference to `_end'

这些似乎是面向 ELF 的符号。如果有人可以建议我如何在 PE 世界中处理这些问题,例如,如果有等价物,那将对我有很大帮助!

4

1 回答 1

0

有一些工具可以转换不同的目标文件格式,但它们可能无法满足您的需求。

我假设您需要将编译器 (gcc) 配置为交叉编译器,以便为您的 Msys 环境生成正确的格式。

于 2009-04-05T22:07:57.340 回答