汇编程序和 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源代码中强制符号。
错误:在函数“_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源代码中强制符号。