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
-
Crear el script:
-
Guarda el contenido anterior en un archivo llamado
setup_and_compile.sh
en la raíz del proyecto.
-
Guarda el contenido anterior en un archivo llamado
- Dar permisos de ejecución:
- Ejecutar el script:
chmod +x setup_and_compile.sh
./setup_and_compile.sh
3. ¿Qué hace el script?
-
Verifica si los archivos necesarios existen (como
logger.h
,logger.c
yMakefile
). - Crea los archivos faltantes con contenido inicial básico.
-
Ejecuta
make
para compilar el proyecto automáticamente. - 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.
Tags
Lenguaje C