Como usar o pacote de desenvolvimento instalado pelo gerenciador de pacotes sys?

1

Estou confuso sobre como usar *-dev packages no Ubuntu.

Eu quero usar a biblioteca libxml2 , no Ubuntu, para meu próprio desenvolvimento de código. Instalei o libxml2-dev usando apt-get , que coloca os arquivos de cabeçalho no /usr/include/libxml2/libxml .

Para incluir um arquivo de cabeçalho, por exemplo parse.h , tenho que usar o seguinte caminho libxml2/libxml/parser.h . Isso funciona bem, mas depois me deparo com uma série de problemas.

parse.h , conforme escrito pelo desenvolvedor, inclui outro cabeçalho libxml/xmlversion.h . Infelizmente, esse caminho NÃO é consistente com a forma como esses arquivos de cabeçalhos de pacotes -dev são armazenados no Ubuntu. Ou seja, xmlversion.h precisa ser chamado (pelo menos pelo meu programa) como libxml2/libxml/xmlversion.h .

Da mesma forma, xmlversion.h chama um cabeçalho libxml/xmlexports.h , que também não está no caminho de pesquisa padrão, criando uma série em cascata de erros "Nenhum arquivo desse tipo".

Suponho que eu poderia resolver esse problema especificando manualmente o caminho de pesquisa para incluir /usr/local/libxml2 , mas isso parece negar o benefício de usar um gerenciador de pacotes como apt-get . No mínimo, presumo que o gerenciador de pacotes, ao instalar um pacote *-dev , irá configurar corretamente os caminhos de busca do compilador

O que eu estou perdendo em termos de usar *-dev packages? Isso é um comportamento normal ou um problema específico para libxml2-dev ? O que o Gerenciador de Pacotes apt espera que eu faça após instalar um pacote *-dev ?

    
por codechimp 05.12.2017 / 19:16

1 resposta

2

Os pacotes de desenvolvimento geralmente incluem um arquivo de configuração para pkg-config in /usr/lib/pkgconfig . Este programa pode ser usado (entre outras coisas) para consultar o compilador c necessário e os sinalizadores de linker para usar esta biblioteca.

No caso de libxml2-dev , os sinalizadores do compilador c incluem -I/usr/include/libxml2 :

$ pkg-config libxml-2.0 --cflags
-I/usr/include/libxml2

Uma maneira de usá-lo seria:

gcc $(pkg-config libxml-2.0 --cflags --libs) main.c
    
por 05.12.2017 / 19:25