Não é possível compilar o pequeno código C que usa librsvg

2

Estou quase noob completa no mundo linux e eu uso o Ubuntu 14.04 LTS com o gnome-session-fallback (compiz) sob o VirtualBox na máquina Windows 8.1. Meu objetivo é usar essa biblioteca: link

A única coisa que preciso é compilar o 'svg2cairoxml.c'. Aqui está uma versão muito simplificada deste arquivo:

#include <stdio.h>
#include <stdlib.h>
#include <librsvg/rsvg.h>
#include <cairo/cairo.h>

int main(int argc, char *argv[]) {
    return 0;
}

Eu tentei usar Code :: Blocks 13.12 e Anjuta 3.10.2 sem sucesso. Ambos estão produzindo erro "erro fatal: librsvg / rsvg.h: Nenhum arquivo ou diretório" na compilação. Eu consegui encontrar este arquivo em outro local: 'librsvg-2.0 / librsvg / rsvg.h'. Então eu mudei a 3ª linha do código acima. Mais tarde eu instalei a biblioteca gtk dev seguindo a resposta do stackoverflow. E então eu encontrei o erro que eu não posso resolver: "erro fatal: glib-object.h: Nenhum tal arquivo ou diretório" no arquivo 'rsvg.h':

// this is line 31
#include <glib-object.h>

Eu também localizei este arquivo, o caminho real é 'glib-2.0 \ glib-object.h'. Mas a coisa é que 'rsvg.h' está protegido, então não posso alterá-lo. E é aqui que estou preso.

Também encontrei estas instruções:

link Mas esses são muito complicados para o noob como eu.

Eu acho que meu objetivo (compilar o único arquivo 'svg2cairoxml.c') é bem fácil para programadores Linux experientes. Então alguém pode me ajudar a fazer isso? Também acho que estou fazendo algo errado como usar versões erradas de bibliotecas ou algo assim.

    
por YuriM 25.03.2015 / 22:18

1 resposta

2

Quando um pacote de desenvolvimento instala seus arquivos de cabeçalho e / ou biblioteca em locais que não estão diretamente no caminho de pesquisa do compilador padrão, é necessário especificar os locais explicitamente. Para fazer isso na linha de comando gcc , por exemplo, você usaria as diretivas -I (include path) e -L (caminho da biblioteca) adequadas. Você também precisa informar ao vinculador quais bibliotecas específicas devem ser vinculadas a partir desses caminhos de pesquisa usando -l diretivas como -lrsvg-2 para librsvg-2.

Como caminhos e bibliotecas podem se tornar bastante complexos e variar dependendo da plataforma exata, alguns pacotes de desenvolvimento fornecem um arquivo de configuração de pacote ( .pc ) que pode ser interrogado pelo utilitário pkg-config para gerar as diretivas apropriadas no momento da criação. O pacote librsvg-dev é um desses, portanto, para construir seu programa simples na linha de comando, tudo o que é necessário é

gcc svg2cairoxml.c 'pkg-config --cflags --libs librsvg-2.0'

Para conseguir o mesmo em seu IDE, você tem algumas opções: você pode executar

pkg-config --cflags librsvg-2.0

e

pkg-config --libs librsvg-2.0

em um terminal e copie a saída resultante nas caixas de configurações apropriadas do compilador e do vinculador ou, seguindo essa resposta para uma pergunta semelhante no StackOverflow Como configurar o GTK + para desenvolver com Code :: Blocks no Ubuntu Linux , adicione as substituições do comando pkg-config diretamente na aba Outras opções da seguinte forma:

    
por steeldriver 25.03.2015 / 23:56