汇编程序和 C 代码之间的链接错误 (MinGW)

Linking error between assembler and C code (MinGW)

错误:在函数“_go”中:c.asm:(.text+0x6):未定义对“k_main”的引用
编译:
asm\nasm -f elf -o c.o c.asm
bin\ld -oformatbinary -Ttext 0x200000 -o bin\kernel.bin c.o bin\video.o bin\inter.o bin\finter.o bin\kernel .o -I "C:\MinGW\include" -L "C:\MinGW\lib"
c.asm:

section .text
global _go
extern  k_main
_go:
    mov esp, 0x200000-4`
    call  k_main


kernel.c

void k_main(){
    //iint();
    //initial();
    for(;;);
}


请帮忙

标识符的实际编码由 object-format/platform/compiler 定义,在这种情况下,C 函数有一个下划线前缀,所以符号实际上是 _k_main

如果你希望它是可移植的,你可以使用宏来做编码,或者你可以在C源代码中强制符号。