编译gtkmm的问题

Posted

技术标签:

【中文标题】编译gtkmm的问题【英文标题】:Problems compiling gtkmm 【发布时间】:2011-01-05 22:09:14 【问题描述】:

操作系统: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 &lt;gtkmm-2.4/gtkmm.h&gt; 包含gtkmm 并重新编译,另一个错误! :(

/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/C++ 程序分两个单独的步骤完成。首先编译源文件,输出目标文件;然后将目标文件链接在一起。您得到的错误来自编译步骤。

在 Linux 上,大多数库都带有 pkg​​config 文件,以便其他程序更容易使用这些库。 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

【讨论】:

嗨卡维尔。我发现您的回答对帮助我编译我的项目非常有帮助,但我仍然无法链接。你愿意在这里帮助我解决我的问题吗(***.com/questions/8586006/…)?非常感谢!【参考方案2】:

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

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

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

【讨论】:

我已经安装了库并包含了它的路径(/usr/lib),但错误仍然存​​在。 :( 安装这些库似乎只给了我共享对象(.so)。我在使用 Boost 时遇到了同样的问题,经过一段时间无法弄清楚它求助于从源代码编译它(然后它为我提供了使用我需要的正确标题),我希望避免这种情况并了解我到底做错了什么,但如果有必要我会这样做。 请注意,您必须安装库的开发版本才能获取头文件。这些通常在其包名称中标有 -dev 扩展名。 包 glibmm24-devel-2.24.2-1.fc14.1.i686 已安装且最新版本 你能在你的系统上找到头文件吗?

以上是关于编译gtkmm的问题的主要内容,如果未能解决你的问题,请参考以下文章

Gtkmm 程序编译正常但崩溃 - windows XP

如何配置Clion编译gtkmm项目

使用 gtkmm 编译 gtk 程序时出错

当我尝试编译我的程序时,GTKmm 头文件似乎丢失了

如何解决“路径错误”编译错误包括 GTKmm 3.0

GTKmm3 (GTK+ 3 C++) 编译但运行时抛出 GLib-GIO-CRITICAL 错误