Herramientas de Programación Curso 2003-2004 |
Práctica 1: make |
En esta práctica se debe diseñar la organización de las fuentes de un proyecto y se deben escribir los makefiles necesarios para su manejo. Las fuentes que se van a manejar se encuentran en el directorio /iilabs/HP/PRAC1. |
Primera parte |
En esta parte de la práctica se deben distribuir las fuentes en 3 directorios:
Las fuentes de la biblioteca minig son: builtin.cc, error.c, hash.cc, Regex.cc, rx.c, String.cc y los includes de los que dependen. Las fuentes de la biblioteca cgi son: CGI.cc, Form.cc, FEP.cc, FileStream.cc, Escape.cc, static.cc, StringBag.cc, String.FEP.VHMap.cc, String.FEP.Map, String.SLBag.cc, String.SLList.cc, String.String.AVLMap.cc, String.String.Map.cc y los includes de los que dependen (excepto los ya usados en la biblioteca anterior). Las fuentes de las demostraciones son: demo.cc y filedemo.cc. Tras distribuir los fuentes deben escribirse 3 makefiles (uno por directorio) que permitan llevar a cabo los siguientes objetivos principales:
Los makefiles deben permitir generar todo lo solicitado y realizar la limpieza desde el directorio de las demostraciones. Además, se debe realizar el mínimo número de acciones necesarias en cualquier situación. Para lo cual se deben de hacer pruebas borrando alguna de las bibliotecas o de los objetos y reintentando el objetivo all. Para generar las bibliotecas estáticas se utilizará la orden ar. Ver página de manual (man ar). |
Segunda parte |
Hay que repetir el proceso de la primera parte pero generando las bibliotecas compartidas: libminig.so y libcgi.so. Para ello, se utilizará la opción -shared del linker. Ver página de manual (man ld). Es conveniente borrar las bibliotecas estáticas antes de generar las compartidas para evitar que enmascaren errores en su generación y uso. A la hora de realizar las pruebas deberá instanciarse la variable de entorno $LIBRARY_PATH con el camino al directorio donde se encuentren las bibliotecas compartidas: directorio de trabajo o $HOME/lib. Esto podría evitarse si las librerias se
instalasen en /usr/lib o alguno
de los directorios enumerados en el fichero /etc/ld.so.conf. |