Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Большое спасибо за интересную статью! Было бы ещё очень здорово в таком же духе, но про x86_64.
если всю ту же функциональность можно получить от хостового компилятора с опцией -ffreestanding.
-nostdinc, -nostdlib, -m32, которые легко забыть.-enable-kvm упомяну.В хостовом компиляторе есть хостовая libgcc, которая может попытаться обратиться к не менее хостовому ядру, к тому же появляются лишние флаги вроде -nostdinc, -nostdlib, -m32, которые легко забыть.
В хостовом компиляторе есть хостовая libgcc, которая может попытаться обратиться к не менее хостовому ядру
тем не менее, для этого нужна хостовая libc
#------------------------------------------------------
#
# Правила сборки кода ядра
#
#------------------------------------------------------
# Исходные объектные модули
SOURCES=init.o main.o
# Флаги компилятора языка C
CFLAGS=-nostdlib -nostdinc -fno-builtin -fno-stack-protector -m32 -g
# Флаги компоновщика
LDFLAGS=-T link.ld -m elf_i386
# Флаги ассемблера
ASFLAGS=--32
# Правило сборки
all: $(SOURCES) link
# Правило очистки
clean:
-rm *.o kernel
# Правило компоновки
link:
ld $(LDFLAGS) -o kernel $(SOURCES)
Переписать ашник.
станет понятно, что гарантированно работоспособный компилятор и комплект binutils собирается не с наскока, а вдумчиво и долго с обязательным прохождением тестов
all: kernel
kernel: $(SOURCES)Там почти не о чем писать, к сожалению, потому что любое EFI-приложение может выступать в качестве загрузчика, а написание простейшего EFI-приложения на Хабре уже не раз освещалось, и в тех примерах достаточно заменить в inf-файле DXE_DRIVER на UEFI_APPLICATION, и у вас получится нужный вам загрузчик.
vodozhaba как Вы относитесь к миссии проекта Embox?
Сборка ядра x86 похоже на программирование микроконтроллеров. Только в MCU есть ROM прямо на чипе.
Как выйти на путь разработки ОС