1.3.1.- Bibliotecas estáticas

En este ejemplo, creará una breve biblioteca propia que contendrá dos funciones y luego usará una de ellas en un programa de prueba. Las funciones se denominan fred y bill y representan saludos.

  1. En primer lugar, cree los archivos fuente por separado (perpicazmente denominados fred.c y bill.c) para cada función.
    El primero:ejemplo_biblioteca_fred
    El segundo:Ejemplo_biblioteca_nill
  2. Podemos compilar estas funciones de manera individual para generar archivos objetos listos para incluirlos en una biblioteca. Para hacerlo, invoque al compilador C con la opción -c, que evita que el compilador intente crear un programa completo. Si intenta crear un programa completo fallará porque no ha definido una función denominada main.Ejemplo_compilacion
  3. Escriba ahora un programa que llame a la función bill. En primer lugar, es una buena idea crear un archivo de cabecera para su biblioteca. De esta manera se declararán las funciones en su biblioteca y deberían incluirlas todas las aplicaciones que deseen usar su biblioteca. Es aconsejable incluir también  el archivo de cabecera en los archivos fred.c y bill.c. Así ayudaremos al compilador a encontrar los errores.Ejemplo_lib
  4. El programa solicitante (program.c) puede ser sencillo. Incluye el archivo de cabecera de la biblioteca y solicita una de las funciones de la biblioteca.Ejemplo_program_c
  5. Ahora puede compilar el programa y probarlo. Por ahora, especifique los archivos objeto explícitamente al compilador, pidiéndole que compile su archivo y que lo vincule con el módulo objeto previamente compilado, bill.o.Ejecucion_programa
  6. Ahora creará y usará una biblioteca. Use el programa ar para crear el archivo y para añadirle sus archivos al objeto. El programa se denomina ar porque crea archivos, o colecciones, o ficheros individuales que se colocan junto en un gran archivo. Tenga en cuenta que también puede usar ar para crear archivos de ficheros de cualquier tipo. (Como la mayoría  de prestaciones UNIX, ar es una herramienta genérica.)crea_biblioteca
  7. se crea la biblioteca y se añaden los dos archivos de objeto. Para usar la biblioteca con éxito, algunos sistemas, en especial aquellos que proceden de Berkeley UNIX, necesitan que se cree una tabla de contenidos de la biblioteca. Hágalo con el comando ranlib. En Linux, este paso no es necesario (pero tampoco es perjudicial)  cuando se usan las herramientas de desarrollo del software GNU.ranlib

Ya podemos usar la biblioteca. Puede añadirlo a la lista de archivos que va a usar el compilador para crear su propio programa:

program_c_compilado

También puede usar la opción -l para acceder a la biblioteca, pero como no se encuentra en ninguna de las ubicaciones estándar, tendrá que indicarle al compilador dónde puede encontrarla usando la opción -L de esta manera:

ejemplo_libreria3

La opción -L. le indica al compilador que busque bibliotecas en el directorio actual (.). La opción -lfoo le indica al compilador que use una biblioteca denominada libfoo.a (o una biblioteca compartida, libfoo.so, si existiese). Para ver qué funciones están incluidas en un archivo objeto, en una biblioteca, o en un programa ejecutable, puede usar el comando nm.

comando_nm

Si observa libfoo.a, verá que la biblioteca contiene tanto bill como fred, pero que program contiene únicamente bill.

comando nm_2
Al crear el programa, se incluyen solo las funciones de la biblioteca que necesita. Incluir el archivo de cabecera, que contiene las declaraciones de todas las funciones de la biblioteca, no hace que se incluya toda la biblioteca en el programa final.

Una respuesta a 1.3.1.- Bibliotecas estáticas

  1. sergio dijo:

    muy bien explicado,muy didáctico felicitaciones

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s