Contenidos
En este tutorial, exploraremos cómo trabajar con bibliotecas compartidas estáticas en C en el entorno Linux. Las bibliotecas estáticas permiten incluir el código de la biblioteca directamente en el ejecutable en tiempo de compilación, lo que resulta en un archivo ejecutable independiente.
¿Qué es una biblioteca estática?
Una biblioteca estática es un archivo que contiene código objeto que puede ser enlazado directamente en el archivo ejecutable durante el proceso de compilación. A diferencia de las bibliotecas compartidas (dinámicas), el código de una biblioteca estática se incorpora en el ejecutable, lo que significa que no se necesita la biblioteca en tiempo de ejecución.
Creación de una biblioteca estática
A continuación se muestra un proceso básico para crear y utilizar una biblioteca estática.
1. Escribir el código de la biblioteca
Primero, crea un archivo de código fuente con la implementación de las funciones que deseas incluir en la biblioteca.
1 2 3 4 5 6 7 8 9 10 |
/* libmath.c */ #include <stdio.h> void add(int a, int b) { printf("Resultado de %d + %d = %d\n", a, b, a + b); } void subtract(int a, int b) { printf("Resultado de %d - %d = %d\n", a, b, a - b); } |
2. Crear el archivo de encabezado
El archivo de encabezado proporciona las declaraciones de las funciones que la biblioteca ofrece.
1 2 3 4 5 6 7 8 |
/* libmath.h */ #ifndef LIBMATH_H #define LIBMATH_H void add(int a, int b); void subtract(int a, int b); #endif |
3. Compilar el archivo de código fuente en un archivo de objeto
Utiliza el siguiente comando para compilar el archivo de código fuente en un archivo de objeto:
1 |
gcc -c libmath.c -o libmath.o |
4. Crear la biblioteca estática
Utiliza ar
para crear la biblioteca estática a partir del archivo de objeto:
1 |
ar rcs libmath.a libmath.o |
Uso de la biblioteca estática en un programa
A continuación se muestra cómo usar la biblioteca estática en un programa:
1 2 3 4 5 6 7 8 9 |
/* main.c */ #include <stdio.h> #include "libmath.h" int main() { add(5, 3); subtract(10, 7); return 0; } |
Compilar el programa con la biblioteca estática
Compila el programa incluyendo la biblioteca estática:
1 |
gcc main.c -L. -lmath -o main |
Aquí, -L.
indica el directorio actual como la ubicación de las bibliotecas y -lmath
especifica que se debe enlazar con libmath.a
.
Ejecutar el programa
Una vez compilado, ejecuta el programa:
1 |
./main |
Deberías ver la salida:
1 2 |
Resultado de 5 + 3 = 8 Resultado de 10 - 7 = 3 |
Consideraciones
Las bibliotecas estáticas aumentan el tamaño del ejecutable ya que el código de la biblioteca se incluye en él. Además, cualquier cambio en la biblioteca requiere recompilar los programas que la utilizan.
Conclusión
Las bibliotecas estáticas son una herramienta útil para incluir código de bibliotecas en un ejecutable sin depender de archivos externos en tiempo de ejecución. Con los ejemplos proporcionados, ahora deberías tener una comprensión básica de cómo crear y usar bibliotecas estáticas en C bajo un entorno Linux.