Evita confrontos da versão de desenvolvimento com pacotes do sistema

2

O que eu quero dizer é que pretendo trabalhar um pouco em um projeto de código aberto que eu já instalei através dos meus pacotes de sistema. O que eu estou querendo saber é se existe um fluxo de trabalho sugerido para gerenciar esta situação, onde eu quero manter meus pacotes instalados pelo sistema, mas também compilar e executar a versão que estou desenvolvendo.

Minha pergunta é geral, já que eu me perguntava isso antes com outros projetos, mas essa instância em particular me levou a fazer essa pergunta.

O projeto ao qual estou me referindo é rtorrent . O projeto tem outras dependências, é claro, mas em particular ele tem um pelo mesmo autor: libtorrent . O ponto é que ambas as coisas são mais recentes que os pacotes do meu sistema, então eu preciso puxar ambos e construir o rtorrent contra essa versão do libtorrent.

Até agora eu compilei o libtorrent, na verdade não estou fazendo make install , já que é onde ele entraria em conflito com os pacotes do meu sistema, imagino. Acabou despejando os arquivos da biblioteca em src/.libs , mas acho que também precisarei acessar o (s) arquivo (s) de cabeçalho, certo?

Como devo prosseguir com a construção deste rtorrent clonado em git? Eu nunca fiz isso antes, então por favor, desculpe a ignorância, mas tudo gira em torno do script ./configure ? Devo usar simplesmente usar LDFLAGS para adicionar o caminho da biblioteca com -L e CPPFLAGS para adicionar o caminho de inclusão (para cabeçalho (s)) com -I ? Ou eu deveria voltar a./configure libtorrent com um --prefix comum para libtorrent e rtorrent, e então make install libtorrent?

Obrigado!

EDITAR : ./configure --help mostra essas "variáveis de ambiente influentes"

libtorrent_CFLAGS
          C compiler flags for libtorrent, overriding pkg-config
libtorrent_LIBS
          linker flags for libtorrent, overriding pkg-config
O que eu estou curioso é, isso me dá a impressão de que, mesmo se eu fosse definir LDFLAGS e CPPFLAGS , no final das contas ele obtém as informações para o libtorrent usando pkg-config , então eu tenho que usar essas em vez de. Usar esses resultados resultou em uma execução bem-sucedida de ./configure , juntamente com um parâmetro --prefix . Acho que estou pronto para ir.

    
por Jorge Israel Peña 31.03.2013 / 23:56

1 resposta

1

Existem duas maneiras principais de lidar com isso em tempo de execução , usando vinculação rpath ou carregando seus objetos compartilhados de desenvolvimento via LD_LIBRARY_PATH ou LD_PRELOAD.

Em tempo de compilação, você precisa inserir as opções de linha de comando -I / -L necessárias (você já encontrou uma maneira para isso).

Bem, o que funciona para mim é usar o rpath-linking e manter o pkgconfig, remendando os arquivos de configuração gerados para emitir os caminhos certos. Veja este script para detalhes.

    
por 01.04.2013 / 00:59