Проблемы с компиляцией gtkmm - PullRequest
16 голосов
/ 06 января 2011

ОС: 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.Нет, Буэно, 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

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

Ответы [ 2 ]

23 голосов
/ 06 января 2011

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

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

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

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

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

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

Вы пытаетесь вручную указать /usr/include/gtkmm-2.4 для пути включения; это не верно. Вместо этого используйте вывод pkgconfig, чтобы выяснить, где находятся заголовочные файлы. Чтобы получить все каталоги включения, необходимые для 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

1 голос
/ 06 января 2011

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

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

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

...