3.3. Uso de una biblioteca con GCC
Una biblioteca es un paquete de código que puede reutilizarse en su programa. Una biblioteca en C o C está formada por dos partes:
- El código de la biblioteca
- Archivos de cabecera
Compilación de código que utiliza una biblioteca
Los archivos de cabecera describen la interfaz de la biblioteca: las funciones y variables disponibles en la biblioteca. La información de los archivos de cabecera es necesaria para compilar el código.
Normalmente, los archivos de cabecera de una biblioteca se colocan en un directorio diferente al del código de su aplicación. Para indicar a GCC dónde están los archivos de cabecera, utilice la opción -I
:
$ gcc ... -Iinclude_path...
Sustituya include_path por la ruta real del directorio de archivos de cabecera.
La opción -I
puede utilizarse varias veces para añadir varios directorios con archivos de cabecera. Al buscar un archivo de cabecera, estos directorios se buscan en el orden en que aparecen en las opciones de -I
.
Vinculación de código que utiliza una biblioteca
Al enlazar el archivo ejecutable, deben estar disponibles tanto el código objeto de su aplicación como el código binario de la biblioteca. El código de las bibliotecas estáticas y dinámicas está presente en diferentes formas:
-
Las bibliotecas estáticas están disponibles como ficheros de archivo. Contienen un grupo de archivos de objetos. El archivo tiene una extensión de nombre de archivo
.a
. -
Las bibliotecas dinámicas están disponibles como objetos compartidos. Son una forma de archivo ejecutable. Un objeto compartido tiene una extensión de nombre de archivo
.so
.
Para indicar a GCC dónde están los archivos o ficheros de objetos compartidos de una biblioteca, utilice la opción -L
:
$ gcc ... -Llibrary_path -lfoo...
Sustituya library_path por la ruta real del directorio de la biblioteca.
La opción -L
puede utilizarse varias veces para añadir varios directorios. Al buscar una biblioteca, estos directorios se buscan en el orden de sus opciones -L
.
El orden de las opciones es importante: GCC no puede enlazar contra una biblioteca foo a menos que conozca el directorio con esta biblioteca. Por lo tanto, utilice las opciones -L
para especificar los directorios de las bibliotecas antes de utilizar las opciones -l
para enlazar con las bibliotecas.
Compilar y enlazar el código que utiliza una biblioteca en un solo paso
Cuando la situación permita compilar y enlazar el código en un solo comando gcc
, utilice las opciones para las dos situaciones mencionadas anteriormente a la vez.
Recursos adicionales
- Uso de la colección de compiladores de GNU (GCC)
- Uso de la colección de compiladores de GNU (GCC)