Makefile avanzado que crea la estructura del proyecto, compila los archivos, enlaza los binarios y genera una imagen ISO lista para ejecutarse en hardware real. 🚀
# Definición de directorios principales
DIRS := ProyectoSO bootloader bootloader/build kernel kernel/drivers kernel/memory \
kernel/scheduler kernel/syscall kernel/src kernel/build user user/build tools docs
# Archivos fuente
BOOTLOADER_SRC := bootloader/boot.asm bootloader/stage1.asm bootloader/stage2.asm
KERNEL_SRC := kernel/src/kernel_entry.asm kernel/src/kernel_main.c
USER_SRC := user/shell.c
# Archivos generados
BOOTLOADER_OBJ := bootloader/build/boot.o bootloader/build/stage1.o bootloader/build/stage2.o
KERNEL_OBJ := kernel/build/kernel_entry.o kernel/build/kernel_main.o
USER_OBJ := user/build/shell.o
KERNEL_BIN := kernel/build/kernel.bin
BOOTLOADER_BIN := bootloader/build/bootloader.bin
FINAL_BIN := ProyectoSO/build/bootload_x8664.bin ProyectoSO/build/bootload_x8664.elf ProyectoSO/build/bootload_x8664.iso ProyectoSO/build/boot.cat
# Herramientas de compilación
ASM := nasm
CC := gcc
LD := ld
ISO_TOOL := xorriso
.PHONY: all setup compile link iso clean
all: setup compile link iso
# Creación de estructura de directorios
setup:
mkdir -p $(DIRS)
# Compilación de archivos fuente
compile:
$(ASM) -f elf64 bootloader/boot.asm -o bootloader/build/boot.o
$(ASM) -f elf64 bootloader/stage1.asm -o bootloader/build/stage1.o
$(ASM) -f elf64 bootloader/stage2.asm -o bootloader/build/stage2.o
$(ASM) -f elf64 kernel/src/kernel_entry.asm -o kernel/build/kernel_entry.o
$(CC) -c kernel/src/kernel_main.c -o kernel/build/kernel_main.o
$(CC) -c user/shell.c -o user/build/shell.o
# Enlace de los binarios finales
link:
$(LD) -T bootloader/linker.ld -o $(BOOTLOADER_BIN) $(BOOTLOADER_OBJ)
$(LD) -T kernel/linker.ld -o $(KERNEL_BIN) $(KERNEL_OBJ)
$(LD) -T ProyectoSO/linker.ld -o ProyectoSO/build/bootload_x8664.elf $(BOOTLOADER_BIN) $(KERNEL_BIN) $(USER_OBJ)
objcopy -O binary ProyectoSO/build/bootload_x8664.elf ProyectoSO/build/bootload_x8664.bin
# Creación de la imagen ISO para hardware real y pruebas en QEMU
iso:
$(ISO_TOOL) -as mkisofs -o ProyectoSO/build/bootload_x8664.iso -b boot.cat -no-emul-boot ProyectoSO/build
# Limpieza de archivos generados
clean:
rm -rf $(DIRS)
Características clave:
- ✅ Automatización total de la estructura del proyecto.
-
✅ Compilación de archivos en ensamblador (
nasm) y C (gcc). - ✅ Enlace correcto del núcleo y el bootloader.
-
✅
Generación de una imagen ISO funcional para hardware real y pruebas en
QEMU.
Este Makefile garantiza una arquitectura organizada y modular, facilitando la evolución del sistema operativo. 🚀

0 Comentarios