【发布时间】:2026-02-14 05:20:07
【问题描述】:
许多开发人员告诉我使用交叉编译器来编译我的操作系统。
问题是当我从使用gcc 切换到使用x86_64-w64-mingw32-gcc 时,它给了我这篇文章标题中的错误。
我在 Windows 上使用 WSL,我检查了 /usr/include 以查看 elf.h 是否存在,并且确实存在。所以我尝试在使用-I/usr/include 编译时包含该目录,但它仍然不起作用。
PS:我试图在 kernel.cpp 中调用我的 __main 函数,并且我需要 elf.h 来获取标题条目(除非有一种方法可以在没有 elf.h 的情况下做到这一点,我不知道大约)。
完整的引导加载程序生成文件:
all:
x86_64-w64-mingw32-gcc -Ignu-efi/inc -Ignu-efi/inc/x86_64 -Ignu-efi/inc/protocol -c -o build/main.o c/main.c
x86_64-w64-mingw32-gcc -Ignu-efi/inc -Ignu-efi/inc/x86_64 -Ignu-efi/inc/protocol -c -o build/data.o gnu-efi/lib/data.c
x86_64-w64-mingw32-gcc -nostdlib -Wl,-dll -shared -Wl,--subsystem,10 -e efi_main -o essentials/main.efi build/main.o build/data.o
我正在使用 UEFI Bare Bones(仅限 GNU-EFI 标头)。
有没有办法阻止错误,或者有没有使用elf.h的替代方法?
感谢您的帮助!
【问题讨论】:
标签: operating-system cross-compiling mingw32