Проблемы с компиляцией gtkmm

ОС: Fedora 14

Компилятор: g++ (GCC) 4.5.1 20100924 (Red Hat 4.5.1-4)

Я установил gtkmm24-devel из репозитория через yum. Чтобы убедиться, что установка прошла, как планировалось, я решил попробовать один из примеров на странице.

#include <gtkmm.h>

int main(int argc, char *argv[]) {
    Gtk::Main kit(argc, argv);
    Gtk::Window window;
    Gtk::Main::run(window);
    return 0;
}

Я запустил пример и, эй! Он сказал, что не может найти gtkmm.h, без проблем, я просто забыл связать библиотеку. Я добавил /usr/include/gtkmm -2.4 в мой поиск в библиотеке через Eclipse. Нет bueno, g++ все еще не может найти его!

fatal error: gtkmm.h: No such file or directory

Затем я пытаюсь включить gtkmm с помощью #include <gtkmm-2.4/gtkmm.h> и перекомпилировать другую ошибку!: (

/usr/include/gtkmm-2.4/gtkmm.h:87:20: fatal error: glibmm.h: No such file or directory

Спасибо за чтение.

Ответы

Ответ 1

Короткий ответ

Используйте выходные данные 'pkg-config gtkmm-2.4 --cflags' для включенных путей и 'pkg-config gtkmm-2.4 -libs' для связывания библиотек.

Длинный ответ

Он сказал, что не может найти gtkmm.h, без проблем, я просто забыл связать библиотеку.

Построение программы C/С++ выполняется двумя отдельными шагами. Сначала исходные файлы скомпилированы, выводятся объектные файлы; а затем объектные файлы связаны друг с другом. Ошибка, которую вы получаете, происходит с этапа компиляции.

В Linux большинство библиотек поставляются с файлами pkgconfig, чтобы облегчить использование другими программами библиотек. gtkmm также имеет свои собственные файлы pkgconfig.

Вы пытаетесь вручную указать /usr/include/gtkmm -2.4 для include path; это не верно. Вместо этого используйте вывод pkgconfig, чтобы выяснить, где находятся файлы заголовков. Чтобы получить все каталоги include, необходимые для gtkmm, используйте следующую команду:

pkg-config gtkmm-2.4 --cflags

Для связывания используйте следующую команду pkgconfig, чтобы получить библиотеки, с которыми вам нужно связать:

pkg-config gtkmm-2.4 --libs

Вы можете проверить его в командной строке, вызвав g++ напрямую.

g++ myfirstprogram.cpp -o myfirstprogram `pkg-config gtkmm-2.4 --cflags --libs`

Дополнительные сведения см. в документах gtkmm: http://library.gnome.org/devel/gtkmm-tutorial/unstable/sec-basics-simple-example.html.en

Ответ 2

Эти шаги обычно помогают решить эту проблему:

  • Найдите свой компьютер для glibmm.h
    •   
    • Если найдено - добавьте его каталог в список путей включения  
    • Если не найдено - Google для glibmm.h и узнайте, в какую библиотеку он содержится. В этом случае вы обнаружите это ( удивление!) glibmm. Установите его, используя диспетчер пакетов.

Проблема, как отмечено в комментариях, является ошибкой компилятора, и компилятор спорит о отсутствующем (заголовочном) файле. Шаги, описанные выше, либо обнаруживают местоположение отсутствующего файла, либо помогают вам установить библиотеку, к которой принадлежит файл заголовка.