编译gtkmm的问题

时间:2011-01-05 22:09:14

标签: c++ eclipse gtkmm

操作系统:Fedora 14

编译器: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

感谢阅读。

2 个答案:

答案 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)

这些步骤通常有助于解决此问题:

  • 在计算机中搜索glibmm.h   
          
    • 如果找到 - 将其目录添加到包含路径列表
    •     
    • 如果找不到 - Google for glibmm.h并找出它所包含的库。在这种情况下你会发现它(惊喜!)glibmm。使用包管理器安装它。
    •   

如注释中所述,问题是编译器错误,编译器正在争论缺少(头文件)文件。我上面描述的步骤要么找到丢失文件的位置,要么帮助您安装头文件所属的库。