web-dev-qa-db-fra.com

erreur de compilation: la bibliothèque est installée (la politique apt-cache le montre) mais pkg-config ne la trouve pas

Je suis désolé, je n'ai pas d'expérience avec gcc et l'installation de paquets à partir des sources, et je ne peux pas résoudre mon problème:

J'essaie d'installer ncmpcpp à partir de la source ( github ) sur Ubuntu 14.04 (la raison en est que les visualiseurs sont colorés dans la version 0.7 .1).

Donc, auparavant, j'ai installé mpd et ncmpcpp à partir du référentiel (version 0.5.10) fonctionnait très bien.

Maintenant, mes étapes d'installation (après avoir supprimé ncmpcpp avec apt-get):

git clone https://github.com/arybczak/ncmpcpp
cd ncmpcpp
./autogen.sh

L'erreur que j'obtiens est:

configure: error: libmpdclient >= 2.8 is required!

Cependant, voici le résultat de apt-cache policy libmpdclient2:

libmpdclient2:
  Installé : 2.9-1ubuntu1
  Candidat : 2.9-1ubuntu1
 Table de version :
 *** 2.9-1ubuntu1 0
        500 http://archive.ubuntu.com/ubuntu/ trusty/universe AMD64 Packages
        100 /var/lib/dpkg/status

Après quelques recherches sur Google, j'ai essayé cette commande: ldconfig -p | grep mpdclient:

libmpdclient.so.2 (libc6,x86-64) => /usr/lib/libmpdclient.so.2

Mais je peux réellement vérifier que pkg-config ne le trouve pas:

$ pkg-config --exists --print-errors "libmpdclient2"

Package libmpdclient2 was not found in the pkg-config search path.
Perhaps you should add the directory containing `libmpdclient2.pc'
to the PKG_CONFIG_PATH environment variable
No package 'libmpdclient2' found

Essayer avec "libmpdclient" renvoie la même chose.

J'ai recherché mon ordinateur à l'aide de Sudo find / -name "libmpdclient2.pc" et rien n'est venu.

Lorsque vous lisez le fichier configure.ac (dont la syntaxe ne m'est pas familière), vous voyez ceci, et je me demande s'il vérifie libmpdclient ou libmpdclient2:

dnl ==============================
dnl = checking for libmpdclient2 =
dnl ==============================
PKG_CHECK_MODULES([libmpdclient], [libmpdclient >= 2.8], [
    AC_SUBST(libmpdclient_CFLAGS)
    AC_SUBST(libmpdclient_LIBS)
    CPPFLAGS="$CPPFLAGS $libmpdclient_CFLAGS"
    AC_CHECK_HEADERS([mpd/client.h],
        LIBS="$LIBS $libmpdclient_LIBS"
    ,
        AC_MSG_ERROR([missing mpd/client.h header])
    )
],
    AC_MSG_ERROR([libmpdclient >= 2.8 is required!])
)

Désolé pour le long post, je n'ai plus d'indices. J'ai le sentiment qu'il s'agit d'un package pour les utilisateurs d'Archlinux plutôt que pour ceux d'Ubuntu mais je l'aime beaucoup!

1
PlasmaBinturong

Habituellement, dans le schéma de packaging Ubuntu, les fichiers nécessaires au développement logiciel en utilisant une bibliothèque (y compris les fichiers d'en-tête et pkg-config .pc fichiers, le cas échéant) sont séparés de la bibliothèque d'exécution elle-même et fournis dans un package distinct.

Le plus souvent, ce package porte le même nom que le package de la bibliothèque d'exécution, plus un -dev suffixe, par exemple

libgimp2.0 - Libraries for the GNU Image Manipulation Program
libgimp2.0-dev - Headers and other files for compiling plugins for GIMP

cependant, dans ce cas, il semble que le package de développement correspondant à libmpdclient2 est simplement libmpdclient-dev:

$ apt-cache policy libmpdclient2
libmpdclient2:
  Installed: (none)
  Candidate: 2.9-1ubuntu1
  Version table:
     2.9-1ubuntu1 0
        500 http://ca.archive.ubuntu.com/ubuntu/ trusty/universe AMD64 Packages

tandis que

$ apt-cache policy libmpdclient-dev
libmpdclient-dev:
  Installed: (none)
  Candidate: 2.9-1ubuntu1
  Version table:
     2.9-1ubuntu1 0
        500 http://ca.archive.ubuntu.com/ubuntu/ trusty/universe AMD64 Packages

Installation de libmpdclient-dev le package doit fournir les fichiers de développement nécessaires et conserver pkg-config content, mais vous devez utiliser le nom de package correct:

pkg-config --exists --print-errors libmpdclient
4
steeldriver