Existe alguma ferramenta automática para instalar bibliotecas necessárias para compilar um programa a partir do código-fonte?

4

Eu quero saber se existe alguma ferramenta que, dada a saída de configure, cmake, autoconf ou qualquer outro combinador de biblioteca / dependências que você tenha; instala os pacotes / fontes necessários para você em seu repositório de distro.

Em outras palavras, alguma ferramenta que resolve dependências de bibliotecas para você, instalando os pacotes necessários dependendo do seu repositório, quando você quer construir um programa a partir do código-fonte que não sabe quais bibliotecas são necessárias.

Dou-lhe um exemplo aleatório:
  Algum tempo atrás eu queria usar o Oprofile . Não é empacotado para o Ubuntu 14.04, então eu tive que construir para mim mesmo.
 No arquivo README ele diz que eu tenho que fazer ./configure primeiro. Eu fiz ./configure uma vez, isso jogou fora um erro dizendo que a biblioteca "popt" não foi encontrada. Eu procurei na Internet, descobri que pacote deb tive que instalar para aquela biblioteca, instalei-o e fiz ./configure novamente.
 Segunda vez, mais uma vez, ocorreu um erro dizendo que biblioteca de liberdade não foi encontrada. Mais uma vez, eu procurei em qual biblioteca eu precisava, achei que para o Ubuntu era o binutils-dev. Mas quando tentei instalá-lo, não funcionou. Engraçado, essa biblioteca estava no pacote binutils-dev para o Ubuntu 12.04, mas libiberty-dev para o Ubuntu 14.04.  Pela terceira vez, finalmente consegui compilar e rodar o programa

    
por Akronix 23.02.2015 / 16:45

1 resposta

3

Não, ele não pode inferir totalmente as dependências automaticamente.

Se tivesse sido empacotado, apt-get build-dep oprofile teria ajudado. Se você puder encontrar um pacote em outro lugar, você pode procurar as dependências lá. Por exemplo, se o pacote existir na próxima versão da sua distribuição. por exemplo. aqui:

link

(e se você planeja compilar as coisas sozinho, considere sempre atualizar para a versão mais recente primeiro!)

Além disso, requer um pouco de experiência para descobrir. Infelizmente, os scripts configure não informam os nomes dos pacotes, mas geralmente são muito fáceis de encontrar. Use também as funções de pesquisa nas páginas da web de distribuição - elas podem informar quais pacotes contêm um determinado nome de arquivo.

Em vez de iterar por configure tentativas, pode ser mais conveniente examinar o arquivo configure.ac , a partir do qual o script foi gerado (e que geralmente é muito menor). Você pode descobrir algumas funcionalidades opcionais oferecidas somente se determinadas bibliotecas estiverem instaladas e algum sinalizador for fornecido.

LIBERTY_LIBS="-liberty $DL_LIB $INTL_LIB"
BFD_LIBS="-lbfd -liberty $DL_LIB $INTL_LIB $Z_LIB"
POPT_LIBS="-lpopt"

são dependências típicas de bibliotecas.

AC_ARG_ENABLE(gui,[  --enable-gui  compile with gui component (qt3|qt4|yes|no),
         if not given or set to yes, gui defaults to qt3],, enable_gui=qt3)

indica que você também pode querer considerar as dependências do QT se você quiser uma GUI.

    
por 24.02.2015 / 09:18