试图用C++ & NASM (以前的DJGPP & NASM)编译一个MinGW内核项目。实际上也尝试过Cygwin,其结果与此完全相同:
\DJGPP\bin换成了\MinGW\bin。得到以下链接错误: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会“解决”这一问题,但这更像是一次黑客攻击,而不是一种长期解决方案。我想让MinGW编译现有的代码,而不进行任何(或最小的)修改。
坦率地说,我对Windows环境不太熟悉,可以使用任何关于该做什么的提示。该项目(减去上面列出的更改)在DJGPP下编译并引导良好。区别似乎在于DJGGP和MinGW处理编译时类声明的方式?
编辑:最终崩溃了,并在Cygwin上构建了一个交叉编译器。现在都在工作了。
发布于 2011-10-18 16:41:14
你需要建立一个独立的交叉编译器。这个问题在OSDev维基中被多次引用,以至于大多数人建议您通过首先创建交叉编译器开始编写内核。
这篇文章将提供一个逐步的参考来构建你自己的交叉编译器.注意,在Windows中,您可能必须使用MingW或Cygwin构建交叉编译器
https://stackoverflow.com/questions/7809303
复制相似问题