6ta práctica: gcc

  1. Crear el holamundo.c usando el editor vi, compilarlo en un solo paso (gcc -o holamundo holamundo.c) y ejecutarlo (./holamundo).
  2. Compilar el mismo programa estáticamente (gcc -static -o holamundo2 holamundo.c). ¿Qué tamaño tiene el ejecutable? Compararlo con el del ejercicio anterior.
  3. 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.
  4. 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).
  5. 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.
  6. 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).
  7. 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?
  8. 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).