将内核项目从DJGPP移植到MinGW
Porting kernel project from DJGPP to MinGW
尝试用MinGW &NASM(原DJGPP &NASM)。我也试过Cygwin,结果完全相同:
- 首先,将
DJGPPbin
替换为MinGWbin
。target coff-go32 not found.
- 交换目标到
elf32-i386
,并得到cannot perform PE operations on non PE output file 'build/kernel.elf'
这是一个奇怪的错误,因为据我所知,我没有做任何'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处理编译时类声明的方式?
EDIT:最后分解并在Cygwin上构建了一个交叉编译器。
您需要构建一个独立的交叉编译器。这个问题在OSDev Wiki上被引用了很多次,以至于大多数人建议在编写内核之前先创建一个交叉编译器。
本文将逐步提供构建您自己的交叉编译器的参考。注意,在Windows中,您可能必须使用MingW或Cygwin
相关文章:
- 在VS代码中交叉编译Windows与Linux上的MinGW的SDL程序
- 如何将C++中的库和头与MinGW一起使用
- 为什么与常规GCC不同,即使有"学究性错误",MinGW-GCC也能容忍丢失的返回类型
- 无法在windows上使用mingw将sqlite3与c连接
- MinGw 无法从 cmake 编译测试文件
- MSYS2 MinGW程序包中缺少grpc_cpp_plugin协议
- Mingw-64 在构建和安装后不会编译 openCV 代码
- 安装MinGW后C++编译器不起作用?
- 当我尝试通过 mingw 使用 CMake 和 SFML 库编译项目时出错
- 如何在 Linux for Windows 上通过 MinGW 构建静态 ICU 的 Boost
- 使用 MinGW 在 Windows 上安装 GMP 时出错
- VSCode - C++ - MinGW 编译器的问题
- C++:如何在Windows 10上使用编译器MinGW 9.2.0安装OpenCV
- MINGW - 正确运行函数所需的 cdecl
- 尝试在Windows上执行C++时出错(通过MinGW编译)
- 分段 Linux Ubuntu 中的 g++ 错误,但在 Windows 中的 g++/MingW 中,在 C++ 中打
- SFML 库 - 在 MinGW 构建期间未找到错误
- 使用 MinGW 在 Windows 上构建 GLEW 时遇到问题
- 如何使用命令提示符、记事本和 MinGW 使用主文件、头文件和实现文件编译C++程序?
- 将内核项目从DJGPP移植到MinGW