gpt4 book ai didi

c++ - 将内核项目从 DJGPP 移植到 MinGW

转载 作者:搜寻专家 更新时间:2023-10-31 01:55:58 25 4
gpt4 key购买 nike

尝试使用 MinGW 和 NASM(以前称为 DJGPP 和 NASM)编译 C++ 内核项目。实际上也尝试过 Cygwin,结果完全相同:

  • 首先,将 \DJGPP\bin 替换为 \MinGW\bin。收到以下链接错误:找不到 objective-c off-go32。
  • 将目标切换到 elf32-i386,并得到 无法对非 PE 输出文件 'build/kernel.elf' 执行 PE 操作 这是一个有点奇怪的错误,因为据我所知,我没有进行任何“PE 操作”。
  • 再次将目标更改为 pe-i386,出现新错误 build/Common.o:Common.cc:(.text+0x2a): undefined reference to 'atexit'

似乎 MinGW 正在为静态类生成 atexit 调用。 DJGPP 没有。内核在关闭期间执行它自己的 DTOR 处理。我知道定义 atexit 会“解决”这个问题,但在这一点上这更像是一个 hack,而不是一个长期的解决方案。我宁愿让 MinGW 在不进行任何(或最少的)修改的情况下编译现有代码。

坦率地说,我对 Windows 构建环境不是很熟悉,可以使用任何提示来了解如何操作。该项目(减去上面列出的更改)在 DJGPP 下编译和启动正常。区别似乎在于 DJGGP 和 MinGW 处理编译时类声明的方式?

编辑: 最后崩溃并在 Cygwin 上构建了一个交叉编译器。现在一切正常。

最佳答案

您需要构建一个独立的交叉编译器。此问题已在 OSDev Wiki 中多次提及以至于大多数人建议您首先创建一个交叉编译器来开始编写内核。

This article将提供构建您自己的交叉编译器的分步引用。请注意,在 Windows 中,您可能必须使用 MingW 或 Cygwin 构建交叉编译器

关于c++ - 将内核项目从 DJGPP 移植到 MinGW,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7809303/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com