编译器:g ++(GCC)4.5.1 20100924(Red Hat 4.5.1-4)
我通过yum从存储库安装了gtkmm24-devel。为了确保安装按计划进行,我决定尝试使用页面上的一个示例。
#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,没问题,我只是忘了链接库。我通过Eclipse将/usr/include/gtkmm-2.4添加到我的库搜索中。没有bueno,g ++仍然无法找到它!
fatal error: gtkmm.h: No such file or directory
然后我尝试使用#include <gtkmm-2.4/gtkmm.h>
包含gtkmm并重新编译,另一个错误! :(
/usr/include/gtkmm-2.4/gtkmm.h:87:20: fatal error: glibmm.h: No such file or directory
感谢阅读。
答案 0 :(得分:23)
简短回答
使用'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 docs:http://library.gnome.org/devel/gtkmm-tutorial/unstable/sec-basics-simple-example.html.en
答案 1 :(得分:1)
这些步骤通常有助于解决此问题:
如注释中所述,问题是编译器错误,编译器正在争论缺少(头文件)文件。我上面描述的步骤要么找到丢失文件的位置,要么帮助您安装头文件所属的库。