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

时间:2014-06-19 13:03:38

标签: gcc mingw ld

我跟踪了我发现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)。

我怎样才能让它发挥作用?

1 个答案:

答案 0 :(得分:0)

C ++名称mangling在某种程度上调用了kernel_main。

我将该功能定义为extern" C"重新编译并打开对象。我看到实际的函数名是_kernal_main。我打开了我的boot.asm文件并引用了这个名字。