Проблемы с компиляцией 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. Установите его, используя диспетчер пакетов.
Проблема, как отмечено в комментариях, является ошибкой компилятора, и компилятор спорит о отсутствующем (заголовочном) файле. Шаги, описанные выше, либо обнаруживают местоположение отсутствующего файла, либо помогают вам установить библиотеку, к которой принадлежит файл заголовка.