2011-01-05 75 views
14

OS:Fedora 14的编译问题的gtkmm

编译器:克++

我从存储库经由荫安装gtkmm24-devel的(GCC)4.5.1 20100924(红帽4.5.1-4)。为确保安装按计划进行,我决定尝试页面上的其中一个示例。

#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 

我再尝试包括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

这不是一个 “连接” 的错误。这是一个“编译器”错误。有很大的不同。 – chrisaycock 2011-01-05 22:12:23

+0

对不起,我在系统编程方面还是个新手。我将添加我的编译器和版本。 – t3hb4tman 2011-01-05 22:15:31

回答

22

简短的回答

使用 'pkg配置的gtkmm-2.4 --cflags' 的输出包括库链接路径和 'pkg配置的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

嗨kavel。我发现你的答案对帮助我编译我的项目非常有帮助,但我仍然链接有问题。你会愿意帮助我在我的问题在这里(http://stackoverflow.com/questions/8586006/linking-gtkmm-libraries-in-visual-studio)?非常感谢! – wrongusername 2011-12-22 20:13:36

0

这些步骤通常有助于解决这个问题。

  • 在电脑中搜寻glibmm.h
    • 如果发现 - 其添加目录到包括路径列表
    • 如果找不到 - Google for glibmm.h并找出它包含在哪个库中,您会发现这种情况是(惊喜!)glibmm。使用你的包管理器来安装它。

的问题,如在评论所指出的,是一个编译错误和编译器争论丢失(头)文件。上述步骤可以找到丢失文件的位置,或者帮助您安装头文件所属的库。

+0

我已经安装了库并且包含它的路径(/ usr/lib),但错误仍然存​​在。 :( 看来,安装这些库只给我共享对象(.so)。我有与Boost相同的问题,并经过一段时间无法找出它采取从源(编译它然后给我提供我需要的正确标题),我希望避免这种情况,并掌握我究竟做错了什么,但是如果有必要,我会这样做。 – t3hb4tman 2011-01-05 22:39:16

+0

请注意,您必须安装开发版这些库通常在软件包名称中标有-dev扩展名 – 2011-01-05 22:53:52

+0

软件包glibmm24-devel-2.24.2-1.fc14.1.i686已经安装并且最新版本 – t3hb4tman 2011-01-05 23:00:27