erro de compilação: a biblioteca está instalada (a política do apt-cache mostra isso) mas o pkg-config não o encontra

1

Desculpe, não tenho experiência com o gcc e estou instalando pacotes do código-fonte e não consigo corrigir meu problema:

Estou tentando instalar o ncmpcpp da fonte ( github ) no Ubuntu 14.04 (o motivo é que os visualizadores são coloridos na versão 0.7.1).

Então eu instalei o mpd anteriormente e o ncmpcpp do repositório (versão 0.5.10) funcionou muito bem.

Agora meus passos de instalação (depois de ter removido o ncmpcpp com o apt-get):

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

O erro que recebo é:

configure: error: libmpdclient >= 2.8 is required!

No entanto, aqui está o resultado 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

Depois de algum googling, eu tentei este comando: ldconfig -p | grep mpdclient :

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

Mas eu posso realmente verificar se o pkg-config não o encontra:

$ 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

Experimentar com "libmpdclient" retorna o mesmo.

Eu procurei no meu computador usando sudo find / -name "libmpdclient2.pc" e nada apareceu.

Quando você lê o arquivo configure.ac (cuja sintaxe não é familiar para mim), você vê isso, e gostaria de saber se ele verifica 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!])
)

Desculpe pelo longo post, estou sem pistas. Tenho a sensação de que este é um pacote para usuários do Archlinux em vez do Ubuntu, mas eu gosto muito dele!

    
por PlasmaBinturong 08.01.2016 / 13:28

1 resposta

4

Normalmente, no esquema de empacotamento do Ubuntu, os arquivos necessários para o desenvolvimento de software usando uma biblioteca (incluindo arquivos de cabeçalho e pkg-config .pc files, quando fornecidos) são separados do tempo de execução biblioteca em si e fornecida como um pacote separado.

Na maioria das vezes, esse pacote tem o mesmo nome do pacote da biblioteca de tempo de execução, além de um sufixo -dev , por exemplo

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

no entanto, neste caso, parece que o pacote de desenvolvimento correspondente a libmpdclient2 é simplesmente 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

enquanto

$ 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

A instalação do pacote libmpdclient-dev deve fornecer os arquivos de desenvolvimento necessários e manter pkg-config happy, mas é necessário usar o nome do pacote correto:

pkg-config --exists --print-errors libmpdclient
    
por steeldriver 08.01.2016 / 15:15