Я пытаюсь скомпилировать программу C в формат ELF в Windows, поэтому я попытался сделать несколько вещей:
- Скомпилировано с помощью MinGW
gcc -Wall -c test.c -o test.o
, но не получило на выходе test.o - Загружено https://github.com/nativeos/i386-elf-toolchain/releases (32-битная версия) и скомпилирован с
"[...]/i386-elf-gcc" -c test.c -o test.o
, но получил ошибкуi386-elf-gcc/libexec/gcc/i386-elf/5.2.0/cc1.exe: error while loading shared libraries: ?: cannot open shared object file: No such file or directory
Я пытаюсь следовать этому руководству здесь: https://github.com/cfenollosa/os-tutorial, но я застрял в части фактической связи между Assembly и C. Я прекрасно понимаю, что это руководство сделано для Linux, а не для Windows, но я просто... Скажем так, у меня проблемы с использованием Linux.
Я не знаю, какие файлы нужны для решения моей проблемы, поэтому вот:
- ядро.с
void my_function() {
}
int main() {
return 0;
}
- kernel_entry.asm
[bits 32]
[extern main]
call main
jmp $
- boot.asm
[org 0x7c00]
kernel_offset equ 0x1000
mov [bootDrive], dl
mov bp, 0x9000
mov sp, bp
call switch_to_pm
call BEGIN_PM
jmp $
%include "gdt_init.asm"
%include "switch_32.asm"
bootDrive db 0
[bits 32]
BEGIN_PM:
call clear_screen
call kernel_offset
mov ebx, errorMSG
call print_string_pm
jmp $
%include "io/clear.asm"
%include "io/print.asm"
errorMSG db "Something went terribly wrong. Restart the PC to fix it", 0
; bootsector
times 510-($-$$) db 0
dw 0xaa55
Остальные файлы почти копипасты, поэтому я не думаю, что их нужно включать
test.c
, может быть, вы имели в видуkernel.c
? - person Michael Petch   schedule 16.01.2021