Script para automatizar la creación de archivos y compilación

 


1. Script para automatizar la creación de archivos y compilación

Crea un script llamado setup_and_compile.sh en la raíz del proyecto. Este script verificará la existencia de archivos críticos, creará los faltantes y ejecutará la compilación.

Contenido del setup_and_compile.sh:

#!/bin/bash

# Ruta base del proyecto
PROJECT_ROOT="./src"

# Función para verificar y crear directorios y archivos necesarios
create_file_if_missing() {
    local file_path=$1
    local content=$2

    if [[ ! -f $file_path ]]; then
        echo "Creando archivo faltante: $file_path"
        mkdir -p $(dirname "$file_path") # Crear directorio si no existe
        echo "$content" > "$file_path"
    fi
}

# Crear logger.h
create_file_if_missing "$PROJECT_ROOT/log/logger.h" '#ifndef LOGGER_H
#define LOGGER_H
void log_event(const char* event);
void log_error(const char* error);
#endif // LOGGER_H'

# Crear logger.c
create_file_if_missing "$PROJECT_ROOT/log/logger.c" '#include "logger.h"
#include <stdio.h>
#include <time>  

void log_event(const char* event) {
    FILE* log_file = fopen("system.log", "a");
    time_t now = time(NULL);
    fprintf(log_file, "[EVENT] %s - %s", event, ctime(&now));
    fclose(log_file);
}
void log_error(const char* error) {
    FILE* log_file = fopen("system.log", "a");
    time_t now = time(NULL);
    fprintf(log_file, "[ERROR] %s - %s", error, ctime(&now));
    fclose(log_file);
}'

# Crear Makefile si falta
create_file_if_missing "./Makefile" 'CC = gcc
AS = nasm
CFLAGS = -m32 -ffreestanding -O2 -Wall -Wextra

all: bootloader.bin

bootloader.bin: stage1.bin stage2.o gdt.o idt.o peripherals.o memory.o file_system.o interface.o logger.o
    cat stage1.bin stage2.o gdt.o idt.o peripherals.o memory.o file_system.o interface.o logger.o > bootloader.bin

stage1.bin: stage1.asm
    $(AS) -f bin stage1.asm -o stage1.bin

stage2.o: src/stage2.c
    $(CC) $(CFLAGS) -c src/stage2.c -o stage2.o

gdt.o: src/tab_gdt/gdt.c src/tab_gdt/gdt.h
    $(CC) $(CFLAGS) -c src/tab_gdt/gdt.c -o gdt.o

idt.o: src/tab_gdt/idt.c src/tab_gdt/idt.h
    $(CC) $(CFLAGS) -c src/tab_gdt/idt.c -o idt.o

peripherals.o: src/peripherals/peripherals.c src/peripherals/peripherals.h
    $(CC) $(CFLAGS) -c src/peripherals/peripherals.c -o peripherals.o

memory.o: src/memory/memory.c src/memory/memory.h
    $(CC) $(CFLAGS) -c src/memory/memory.c -o memory.o

file_system.o: src/file_system/file_system.c src/file_system/file_system.h
    $(CC) $(CFLAGS) -c src/file_system/file_system.c -o file_system.o

interface.o: src/interface/interface.c src/interface/interface.h
    $(CC) $(CFLAGS) -c src/interface/interface.c -o interface.o

logger.o: src/log/logger.c src/log/logger.h
    $(CC) $(CFLAGS) -c src/log/logger.c -o logger.o

clean:
    rm -f *.bin *.o'

# Compilar el proyecto
echo "Ejecutando make..."
make || { echo "Error durante la compilación."; exit 1; }

echo "Proyecto compilado exitosamente."
 

2. Instrucciones para usar el script

  1. Crear el script:
    • Guarda el contenido anterior en un archivo llamado setup_and_compile.sh en la raíz del proyecto.
  2. Dar permisos de ejecución:  
  3. chmod +x setup_and_compile.sh
     
  4. Ejecutar el script:  
  5. ./setup_and_compile.sh
     

3. ¿Qué hace el script?

  1. Verifica si los archivos necesarios existen (como logger.h, logger.c y Makefile).
  2. Crea los archivos faltantes con contenido inicial básico.
  3. Ejecuta make para compilar el proyecto automáticamente.
  4. Muestra errores si ocurre algún problema durante la compilación.

 

Ventajas del script

  • Automatiza la creación de archivos faltantes para evitar errores recurrentes.
  • Facilita el proceso de configuración inicial del proyecto.
  • Evita la necesidad de verificar manualmente los directorios y dependencias.

 

 

Destacado

Bootloader Avanzado en Ensamblador

Bootloader Avanzado en Ensamblador Características del Bootloader Se carga en la dirección 0x7C00 (BIOS). ...