使用mingw、g++、gcc、ld编译和链接对象

使用mingw、g++、gcc、ld编译和链接对象,gcc,mingw,ld,Gcc,Mingw,Ld,我正在按照我找到的指令编译操作系统内核。 不幸的是,我出错了,不知道该怎么办: gcc boot.o kernel.o -T linker.ld -o kern - nostdlib -nodefaultlibs -lgcc 结果如下: boot.o: In function `start': boot.asm:(.mbHeader+0xe): undefined reference to `kernel_main' collect2.exe: error: ld returned 1 exi

我正在按照我找到的指令编译操作系统内核。 不幸的是,我出错了,不知道该怎么办:

gcc boot.o kernel.o -T linker.ld -o kern - nostdlib -nodefaultlibs -lgcc
结果如下:

boot.o: In function `start':
boot.asm:(.mbHeader+0xe): undefined reference to `kernel_main'
collect2.exe: error: ld returned 1 exit status
一切都是一样的,只是我用boot.o替换了loader.o。在我看来,这是一个错误,loader.o在那一页的任何地方都没有提到


如何使其工作?

C++名称mangling调用内核\u main的方式有些不同


我将该函数定义为extern C重新编译,然后打开该对象。我看到实际的函数名是_kernal_main。我打开了我的Boo..m文件并引用了这个名字。

可能是通过将KNEL.CPP重命名为.n.c,然后用GCC编译而不是G+搜索一个解决方案,我发现问题是关于C++名称的修改。你的解决方案有点像这样。解决了的!