Pkg-config

pkg-config es un software que provee una interfaz unificada para llamar bibliotecas instaladas cuando se está compilando un programa a partir del código fuente. pkg-config fue diseñado originalmente para Linux pero ahora está disponible para BSDs, Microsoft Windows, Mac OS X y Solaris.

Da información diversa sobre las bibliotecas instaladas. Esta información incluye:

  • Parámetros para el compilador de C o de C++.
  • Parámetros para el enlazador.
  • Versión del paquete en cuestión.

Cómo funciona

Cuando una biblioteca se instala (por ejemplo un RPM, un archivo deb o cualquier otro sistema de empaquetamiento binario), se debería incluir un archivo .pc y debería moverse a un directorio con otros archivos .pc (el directorio depende del sistema y suele mostrarse en la página man de pkg-config). Este archivo tiene diversas entradas.

Estas entradas normalmente contiene las bibliotecas que otros programas que usan el paquete requieren para compilar, así como el directorio de las cabeceras, e información, como la versión y alguna descripción.

He aquí un ejemplo de una archivo .pc para la biblioteca libpng:

prefix=/usr/local
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${exec_prefix}/include
 
Name: libpng12 
Description: Loads and saves PNG files
Version: 1.2.8
Libs: -L${libdir} -lpng12 -lz
Cflags: -I${includedir}/libpng12

Este archivo nos dice que las bibliotecas pueden encontrarse en /usr/local/lib y que los encabezados en /usr/local/include, que el nombre de la biblioteca es libpng12 y que la versión es 1.2.8. También da al enlazador las flags necesarias para compilar el código, dependiendo de la biblioteca libpng.

He aquí un ejemplo del uso de pkg-config cuando se compila:

gcc -o test test.c $(pkg-config --libs --cflags libpng)

Enlaces externos

  • Portal de pkg-config en freedesktop.org
  • Página man para pkg-config (en inglés)
  • Guía de pkg-config (en inglés)
Control de autoridades
  • Proyectos Wikimedia
  • Wd Datos: Q282972
  • Informática
  • AUR: pkg-config-git
  • Debian: pkg-config
  • Gentoo: dev-util/pkgconfig
  • Open Hub: pkg-config
  • Ubuntu: pkg-config
  • Wd Datos: Q282972