Red Hat Training

A Red Hat training course is available for RHEL 8

3.4. Uso de una biblioteca estática con GCC

Las bibliotecas estáticas están disponibles como archivos que contienen ficheros objeto. Después de enlazarlas, pasan a formar parte del archivo ejecutable resultante.

Nota

Red Hat desaconseja el uso de enlaces estáticos por razones de seguridad. Consulte Sección 3.2, “Enlace estático y dinámico”. Utilice el enlazado estático sólo cuando sea necesario, especialmente contra las bibliotecas proporcionadas por Red Hat.

Requisitos previos

Nota

La mayoría de las bibliotecas que forman parte de Red Hat Enterprise Linux están soportadas sólo para el enlazado dinámico. Los pasos siguientes sólo funcionan para las bibliotecas que están not habilitadas para el enlace dinámico. Vea Sección 3.2, “Enlace estático y dinámico”.

Procedimiento

Para enlazar un programa a partir de los archivos fuente y objeto, añadiendo una biblioteca enlazada estáticamente foo, que se encuentra como un archivo libfoo.a:

  1. Cambie al directorio que contiene su código.
  2. Compilar los archivos fuente del programa con las cabeceras de la biblioteca foo:

    $ gcc ... -Iheader_path -c ...

    Sustituya header_path por una ruta a un directorio que contenga los archivos de cabecera de la biblioteca foo.

  3. Enlaza el programa con la biblioteca foo:

    $ gcc ... -Llibrary_path -lfoo...

    Sustituya library_path por una ruta a un directorio que contenga el archivo libfoo.a.

  4. Para ejecutar el programa más tarde, simplemente:

    $ ./programa
Atención

La opción de GCC -static relacionada con el enlazado estático prohíbe todo el enlazado dinámico. En su lugar, utilice las opciones -Wl,-Bstatic y -Wl,-Bdynamic para controlar el comportamiento del enlazador con mayor precisión. Véase Sección 3.6, “Uso de bibliotecas estáticas y dinámicas con GCC”.