Не могу скомпилировать крошечный C-код, который использует librsvg

Я почти полный нуб в мире Linux, и я использую Ubuntu 14.04 LTS с gnome-session-fallback (compiz) под VirtualBox на машине с Windows 8.1. Моя цель - использовать эту библиотеку: https://github.com/akrinke/svg2cairo

Единственное, что мне нужно, это скомпилировать 'svg2cairoxml.c'. Вот очень упрощенная версия этого файла:

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

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

Я пытался использовать Code :: Blocks 13.12 и Anjuta 3.10.2, но безуспешно. Они оба выдают ошибку «фатальная ошибка: librsvg / rsvg.h: нет такого файла или каталога» при компиляции. Мне удалось найти этот файл в другом месте: 'librsvg-2.0 / librsvg / rsvg.h'. Поэтому я изменил 3-ю строку кода выше. Позже я установил библиотеку gtk dev после ответа stackoverflow. И затем я обнаружил ошибку, которую не могу устранить: «фатальная ошибка: glib-object.h: такого файла или каталога нет» в файле «rsvg.h»:

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

Я также нашел это файл, реальный путь - «glib-2.0 \ glib-object.h». Но дело в том, что rsvg.h защищен, поэтому я не могу его изменить. И вот где я застрял.

Также я нашел следующие инструкции:

https://stackoverflow.com/questions/7537008/compilation-error- while-using-librsvg Но они слишком сложны для новичков, подобных я.

Я думаю, что моя цель (собрать единственный маленький файл 'svg2cairoxml.c') довольно проста для опытных программистов linux. Так может кто-нибудь, пожалуйста, помогите мне сделать это? Также я предполагаю, что я делаю что-то неправильно, например, использую неправильную версию библиотек или что-то вроде этого.

2
задан 23 May 2017 в 15:39

1 ответ

Когда пакет разработки устанавливает свой заголовок и/или файлы библиотеки в местах, которые не находятся непосредственно на стандартном пути поиска компилятора, необходимо определить местоположения сами явно. Чтобы сделать это на gcc командная строка, например, Вы использовали бы подходящий -I (включайте путь), и -L (путь к библиотеке) директивы. Также необходимо сказать компоновщику который определенные библиотеки связаться от тех путей поиска с помощью -l директивы такой как -lrsvg-2 для librsvg-2.

, Так как пути и библиотеки могут стать довольно сложными, и варьироваться в зависимости от точной платформы, некоторые пакеты разработки обеспечивают конфигурация пакета (.pc) файл, который может быть опрошен pkg-config утилита для генерации соответствующих директив во время изготовления. librsvg-dev пакет - один такой, как создать Вашу простую программу на командной строке все, что это требуется,

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

Для достижения того же в IDE, у Вас есть несколько опций: можно или выполнить

pkg-config --cflags librsvg-2.0

и

pkg-config --libs librsvg-2.0

в терминале и скопировать получающийся вывод в соответствующий компилятор и поля настроек компоновщика или, после этого ответа на подобный вопрос на StackOverflow , Как установить GTK + для разработки с Кодом:: Блоки на Ubuntu Linux, добавляют pkg-config замены команды непосредственно к вкладке Other options следующим образом:

Code::Blocks pkg-config --cflags setting

enter image description here

2
ответ дан 23 May 2017 в 15:39

Другие вопросы по тегам:

Похожие вопросы: