首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >编译gtkmm时出现问题

编译gtkmm时出现问题
EN

Stack Overflow用户
提问于 2011-01-06 06:09:14
回答 2查看 26.6K关注 0票数 18

操作系统: Fedora 14

编译: g++ (GCC) 4.5.1 20100924 (红帽4.5.1-4)

我通过yum从存储库安装了gtkmm24-devel。为了确保安装按计划进行,我决定尝试页面上的一个示例。

代码语言:javascript
复制
#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添加到我的库搜索中。很好,g++还是找不到!

代码语言:javascript
复制
fatal error: gtkmm.h: No such file or directory

然后我尝试通过使用#include <gtkmm-2.4/gtkmm.h>和重新编译来包含gtkmm,另一个错误!:(

代码语言:javascript
复制
/usr/include/gtkmm-2.4/gtkmm.h:87:20: fatal error: glibmm.h: No such file or directory

感谢您的阅读。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-01-06 07:08:25

Short answer

使用'pkg-config gtkmm-2.4 --cflag‘的输出表示包含路径,使用'pkg-config gtkmm-2.4 --libs’表示要链接的库。

Long answer

说找不到gtkmm.h,没问题,我只是忘了链接库。

构建一个C/C++程序需要两个独立的步骤。首先编译源文件,输出目标文件;然后将目标文件链接在一起。你得到的错误来自编译步骤。

在Linux上,大多数库都附带了pkgconfig文件,以便其他程序更容易使用这些库。gtkmm还附带了自己的pkgconfig文件。

您正在尝试手动指定/usr/ include /gtkmm-2.4作为包含路径;这是错误的。相反,可以使用pkgconfig的输出来确定头文件的位置。要获取gtkmm所需的所有包含目录,请使用以下命令:

代码语言:javascript
复制
pkg-config gtkmm-2.4 --cflags

要进行链接,请使用以下pkgconfig命令获取需要链接的库:

代码语言:javascript
复制
pkg-config gtkmm-2.4 --libs

您可以通过直接调用g++在命令行上对其进行测试。

代码语言:javascript
复制
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

票数 25
EN

Stack Overflow用户

发布于 2011-01-06 06:24:20

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

  • 在您的计算机中搜索glibmm.h
    • If found -将其目录添加到include path list
    • If

    found - Google for glibmm.h并找出它包含在哪个库中。在这种情况下,你会发现它是(惊喜!)glibmm。使用您的软件包manager.

安装它

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4609705

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档