我跟踪了我发现here编译os内核的结构。 不幸的是,我收到了一个错误,并且不知道该怎么做:
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)。
我怎样才能让它发挥作用?
答案 0 :(得分:0)
C ++名称mangling在某种程度上调用了kernel_main。
我将该功能定义为extern" C"重新编译并打开对象。我看到实际的函数名是_kernal_main。我打开了我的boot.asm文件并引用了这个名字。