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.
- En primer lugar, cree los archivos fuente por separado (perpicazmente denominados
fred.c
ybill.c
) para cada función.
El primero:
El segundo: - 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 denominadamain
. - 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 archivosfred.c
ybill.c
. Así ayudaremos al compilador a encontrar los errores. - 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. - 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
. - 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.) - 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.
Ya podemos usar la biblioteca. Puede añadirlo a la lista de archivos que va a usar el compilador para crear su propio programa:
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:
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
.
Si observa libfoo.a
, verá que la biblioteca contiene tanto bill
como fred
, pero que program
contiene únicamente bill
.
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.
muy bien explicado,muy didáctico felicitaciones
Me gustaMe gusta