Se você tiver os pacotes instalados em um sistema:
for pc in $(find /usr/lib/pkgconfig/ ${PKG_CONFIG_PATH//:/ } -maxdepth 1 -name "*.pc"); do
printf "$pc "
pp=${pc/#*\/}
pp=${pp/%.pc/}
pkg-config --modversion --libs ${pp}
printf "\n"
done
Isso chama pkg-config
com cada arquivo .pc
instalado em seu sistema, consulta as bibliotecas que cada pacote usa e o caminho da biblioteca necessário (que são as bandeiras -l
e -L
respectivamente, conforme transmitidas ao compilador / linker). Isso é mais ou menos o que o script típico de configure
faz (quando você está fazendo café ou algo mais produtivo do que assistir as linhas passarem).
Também é provável que haja alguns retardatários que não usam pkg-config
e, em vez disso, instale um script -config
:
for pkg in $(find ${PATH//:/ } -maxdepth 1 -type f -name "*-config"); do
printf "$pkg "
$pkg --version --libs
printf "\n"
done
Você ainda precisará fazer um pouco de grep-ing para encontrar exatamente o que está procurando, já que a saída do acima é o que o pacote precisa passar para o compilador ele incluirá os pacotes dependências próprias também . A biblioteca / bibliotecas que o próprio pacote fornece tendem a ser listadas primeiro, por exemplo,
/usr/bin/xine-config 1.1.7
-L/usr/lib -lxine -lz -lresolv -lnsl -pthread -lrt
^^^^^^
/usr/local/lib/pkgconfig/flac.pc 1.2.1
-L/usr/local/lib -lFLAC -lm
^^^^^^
Quando você tiver o arquivo .pc
ou o arquivo -config
identificado, confirme o pacote com dpkg
:
dpkg -S /usr/lib/pkgconfig/libxml-2.0.pc
libxml2-dev: /usr/lib/pkgconfig/libxml-2.0.pc
ou o equivalente do gerenciador de pacotes local, por exemplo rpm -q --whatprovides /usr/lib/pkgconfig/libxml-2.0.pc