Considere ajustar la variable de entorno PKG_CONFIG_PATH si instaló software en un prefijo no estándar. Qué significa esto ?
pkg-config
MKJ
fuente
fuente
Respuestas:
PKG_CONFIG_PATH
es una variable de entorno que especifica rutas adicionales en las quepkg-config
buscará sus archivos .pc.Esta variable se utiliza para aumentar la ruta de búsqueda predeterminada de pkg-config. En un sistema Unix típico, buscará en los directorios
/usr/lib/pkgconfig
y/usr/share/pkgconfig
. Esto generalmente cubrirá los módulos instalados en el sistema. Sin embargo, algunos módulos locales pueden instalarse en un prefijo diferente como/usr/local
. En ese caso, es necesario anteponer la ruta de búsqueda para que pkg-config pueda localizar los archivos .pc.El
pkg-config
programa se utiliza para recuperar información sobre bibliotecas instaladas en el sistema. El uso principal depkg-config
es proporcionar los detalles necesarios para compilar y vincular un programa a una biblioteca. Estos metadatos se almacenan en archivos pkg-config. Estos archivos tienen el sufijo .pc y residen en ubicaciones específicas conocidas por la herramienta pkg-config.Para verificar el
PKG_CONFIG_PATH
valor use este comando:Para establecer el
PKG_CONFIG_PATH
valor use:o
fuente
La primera respuesta no es técnicamente lo suficientemente explícita. Desde la página del manual (abra una terminal, escriba
man pkg-config
):Entonces el
pkg-config
programa no está en elPKG_CONFIG_PATH
directorio; sin embargo, si instala una biblioteca, para que la información para usarla en unautomake
script sea accesible, debe estar en un directorio quepkg-config
tenga en cuenta.fuente
/usr/local/lib/x86_64-linux-gnu
lanzan como una ubicación de búsqueda automática de forma gratuita (con un vacíoPKG_CONFIG_PATH
) y, de hecho, muchos.pc
archivos, notables, incluidos GTK + et al. - vivir allí. La razón de esto es permitir la disponibilidad de múltiples arquitecturas de un paquete simultáneamente, como se describe aquí: askubuntu.com/questions/449348/…pkg-config
buscarán en su sistema: askubuntu.com/a/373217/436580Para ver dónde pkg-config (versión 0.24 o posterior) busca las bibliotecas instaladas de forma predeterminada, use el siguiente comando:
Para modificar esa ruta, establezca la
PKG_CONFIG_PATH
variable de entorno. El archivo man indicaPKG_CONFIG_PATH
:fuente
echo $(pkg-config --variable pc_path pkg-config)${PKG_CONFIG_PATH:+:}${PKG_CONFIG_PATH}
PKG_CONFIG_PATH
y aún tener directorios de búsqueda predeterminados, además de establecer un valor no en blanco no borra los valores predeterminados.Estás tratando de construir una pieza de software, digamos Widget. Widget se basa en otra biblioteca, libcog en aras de la discusión. El proceso de compilación del widget (probablemente un script de configuración) está usando pkg-config para determinar cómo usar libcog. pkg-config no sabe nada sobre libcog.
Si libcog no está instalado, ese es tu problema. Existe una buena posibilidad de que una instalación estándar de libcog solucione el problema. Dependiendo de su sistema, es posible que necesite instalar una versión adicional de "desarrollador" del paquete; a menudo tiene "-devel" o "-dev" al final, por lo que si instala "libcog", es posible que también necesite instalar "libcog-devel".
Si libcog está instalado, probablemente no esté instalado de manera que pkg-config pueda encontrarlo. Probablemente haya un archivo libcog.pc en algún lugar de su sistema. En aras de la discusión, está en /opt/cog/lib/pkgconfig/libcog.pc. En ese caso, puede informarle a pkg-config al configurar PKG_CONFIG_PATH en el directorio que contiene libcog.pc. Entonces, en un shell Bourne o similar, algo así como
Una vez hecho esto, volver a ejecutar el comando que falló con suerte funcionará.
Si está instalado libcog, incluidas las bibliotecas y los archivos de encabezado, y no tiene un archivo libcog.pc, las cosas van mal. Presumiblemente, una instalación estándar de libcog incluye la información, de lo contrario, Widget no confiaría en ella. Primero investigaría reinstalar libcog. Es posible crear manualmente el archivo libcog.pc, pero hacerlo bien es difícil y altamente específico para una biblioteca determinada.
fuente
Miré la página de manual de mi sistema de 64 bits y me confundí un poco. Decía en una línea:
Supuse que siempre se ve en los directorios lib / pkgconfig. Resulta que son los directorios mismos. En mi caso, estaba tratando de compilar el tutorial hello world gtk. Localizo el archivo que quiero, por ejemplo
Entre los resultados están:
Finalmente fue para hacer una exportación.
fuente
man
página se simplifica demasiado para los sistemas modernos con capacidad de arquitectura múltiple. Estuve confundido por un tiempo porque, en Debian 8 x86,pkg-config
ya se ve en la carpeta x86_64 (sin nadaPKG_CONFIG_PATH
). No estoy seguro de cómo se incorporó esto, pero la línea de comando para probar esto que muestra @GrandAdmiral indica que está controlado por el--variable pc_path
que está configurado (¡de alguna manera!) Parapkg-config
el propio paquete.Me parece que la mayoría de las respuestas tienen demasiada información de la necesaria.
El software que se instala puede (y generalmente lo hace) depender de algunas bibliotecas y / o encabezados y el Sistema usa pkg-config para encontrarlos.
Dicho esto,
pkg-config
busca estos archivos en los directorios del sistema predefinidos (predeterminados). Esas carpetas son "prefijo". Por ejemplo,/usr/local
se espera que una biblioteca que tenga prefijo tenga encabezados/usr/local/include
, y la biblioteca en sí estará/usr/local/lib
. Sin embargo, pkg-config busca bibliotecas también en el directorio listado en la variable de entorno PKG_CONFIG_PATH .Luego, si instala software fuera de la lista predeterminada de carpetas, debe "ajustar" la lista, es decir, agregar sus directorios a PKG_CONFIG_PATH
Para más información, puedes mirar aquí y aquí
fuente
PKG_CONFIG_PATH
especifica directorios adicionales en los que buscar solo archivosyourPkg.pc
(pkg-config
especificación). No afecta a cosas específicas de pkg como directorios de búsqueda de biblioteca.Significa que está tratando de construir algo desde la fuente, y no puede encontrar todas las dependencias que necesita. El
pkg-config
script que utiliza para encontrar los archivos de desarrollo para esas bibliotecas, genera este mensaje.fuente
Estaba tratando de instalar la última versión de axel y corrí
./configure
y obtuve esto:Entonces intenté:
y obtuve:
Como es obvio, tenía openssl instalado (
sudo apt-get install openssl
) Pero en el resultado anterior, como puede ver, dice "No se encontró el paquete 'openssl'". Entonces, para asegurarme de que lo hice:Resulta que necesito otro paquete seguro, así que busqué un poco en Google y descubrí que tenía que instalar este paquete:
Y todo esto no tuvo nada que ver con el cambio de la variable env de la ruta pkg-config.
fuente
Aquellos que usan https://github.com/confluentinc/confluent-kafka-go
Siga la instalación de librdkafka
Ahora puedes usar go install / go run go build
fuente