- Crear el holamundo.c usando el editor vi, compilarlo
en un solo paso (gcc -o holamundo holamundo.c) y ejecutarlo
(./holamundo).
- Compilar el mismo programa estáticamente (gcc -static -o holamundo2
holamundo.c). ¿Qué tamaño tiene el ejecutable? Compararlo con el
del ejercicio anterior.
- Construir una funcion max que tome dos enteros y devuelva el
mayor de ellos. Hacer un archivo max.c, y poner la declaración
de la función en max.h. Construir una función promedio
que tome dos enteros y devuelva el promedio entre ambos. Hacer un
archivo promedio.c, y poner la declaración de la función en
promedio.h. Construir un programa prueba.c que lea dos
constantes por standard input (utilizando scanf) y muestre
por standard output (utilizando printf) el máximo y el promedio
de ambos números utilizando las funciones de los archivos anteriores.
Compilar cada código objeto (gcc -c -o promedio.o promedio.c)
y luego vincular los tres códigos objetos (gcc -o prueba max.o
promedio.o prueba.o). Ejecutar y probar el programa.
- Generar una librería de enlace estático (libmat.a) que incluya
los objetos promedio.o y max.o (ar -rs libmat.a
promedio.o max.o).
- Compilar prueba2 utilizando prueba.o y la librería creada en
el ejercicio anterior (gcc -L . -o prueba2 prueba.o -lmat).
Ejecutar y probar el programa.
- Generar una librería de enlace dinámico (libmat.so) que incluya
los objetos promedio.o y max.o (gcc -shared -o
libmat.so promedio.o max.o).
- Compilar prueba2 utilizando prueba.o y la librería creada en
el ejercicio anterior (gcc -L . -o prueba3 prueba.o -lmat).
¿Qué diferencia hay entre este comando y el planteado en el ejercicio
5? Ejecutar y probar el programa (./prueba3). ¿Por qué no funciona?
- Verificar las librerías de enlace dinámico necesarias para ejecutar
prueba, prueba2 y prueba3 (ldd prueba).
Agregar el directorio actual al camino de búsqueda del vinculador
dinámico (export LD_LIBRARY_PATH=.). Verificar de nuevo prueba3
con ldd. Ejecutar y probar el programa (./prueba3).