【问题标题】:glib.h and gtk.h not found找不到 glib.h 和 gtk.h
【发布时间】:2011-07-13 17:35:56
【问题描述】:

大家好,我有一个包含我的程序

  • gtk/gtk.h
  • glib.h

我用过命令

sudo apt-get install libgtk2.0-dev glib 
sudo apt-get install glade

但仍然收到 glib not found 和 gtk/gtk.h not found 的错误。我是第一次使用这个 gtk 。不知道它是如何工作的 如何安装它 请帮助我谢谢

我在做c编程

【问题讨论】:

  • 你是否在你的命令中使用这个来编译:`gtk-config --cflags gtk-config --libs`
  • 是的,先生,我正在使用这些命令。
  • 先生,我只安装了命令中提到的包。我错过了一些事情是我必须做的其他事情吗??
  • 显然gtk-config命令被pkg-config --libs gtk+-3.0篡夺了。

标签: c linux gtk glib gtk2


【解决方案1】:

键入“locate glib.h”以确定文件的位置(假设是当代的 linux 发行版 - 您的帖子没有提供太多信息)。

然后确保在 Makefile 中正确指定 glib.h 的路径。 (您确实有一个 Makefile,不是吗?)对 gtk.h 执行相同的步骤。

【讨论】:

    【解决方案2】:

    您应该使用的命令(在最近的 linux/gtk 版本中)是 pkg-config,而不是 gtk-config。 gtk-config 用于 2.0 之前的 gtk 开发。

    考虑到您正在编译的文件名为 foo.c,要在 gtk-2.0 下编译它,您可以从命令行使用以下命令:

    gcc `pkg-config --cflags glib-2.0 gtk+-2.0` foo.c -o foo `pkg-config --libs glib-2.0 gtk+-2.0`
    

    这应该编译,并给你一个文件 foo,可以执行。

    但实际上,请使用 makefile,因为这些东西一直打字很痛苦。我会写一个示例 makefile,但是在格式化它们时需要遵循一些规则,这使得在编辑器窗口中输入变得困难。

    # Sample Makefile
    CFLAGS := $(shell pkg-config --cflags glib-2.0 gtk+-2.0)
    LDFLAGS := $(shell pkg-config --libs glib-2.0 gtk+-2.0)
    
    foo: foo.c
    <TAB HERE NOT SPACES>$(CC) $(CFLAGS) $< -o $@ $(LDFLAGS)
    

    这定义了一个简单的规则,说制造 foo,它依赖于 foo.c,所以 foo.c 比 foo 更新,它将被重建。在我写“TAB HERE NOT SPACES”的地方,它必须是一个制表符,并且不能是一组空格字符。

    【讨论】:

    • 感谢@Petesh,我整天都在寻找解决方案,结果证明我们编译的顺序确实很重要,例如..当我使用 $ gcc $( pkg-config --cflags --libs glib-2.0) file.c 它工作不正常,仍然给我错误“未定义对 'g_list_append' 和 'g_list_first' 的引用”但在 '' gcc $( pkg-config --cflags glib-2.0) practice.c -o practice $(pkg-config --libs glib-2.0)" 解决了我的问题:)
    • 如果您只想单独调用 pkg-config,也可以将整个 $(pkg-config --cflags --libs glib-2.0) 移动到编译行的末尾。 --cflags 中的内容无论在命令行中的哪个位置都有效,--libs 部分需要在对 practice.c 的引用之后才能正常工作。
    • 感谢@Petesh,它就像你提到的那样工作。 ''''anupam:GLIBC$ gcc practice.c -o practice $(pkg-config --cflags --libs glib-2.0) --> 这有效 --> anupam:GLIBC$ gcc $(pkg-config -- cflags --libs glib-2.0) practice.c -o practice /tmp/ccgX9tV2.o: In function main': practice.c:(.text+0x26): undefined reference to g_list_append' practice.c:(.text+0x36): undefined reference to `g_list_first' collect2: error: ld返回 1 个退出状态 --> 这失败了 ''''
    【解决方案3】:

    请阅读官方文档。它解释了how to compile GTK applications。 基本上要编译一个hello.c 文件来生成一个hello 程序,你需要输入:

    gcc `pkg-config --cflags --libs gtk+-2.0` hello.c -o hello
    

    【讨论】:

      猜你喜欢
      • 2014-04-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-16
      • 1970-01-01
      • 2023-01-07
      • 1970-01-01
      • 2010-11-05
      相关资源
      最近更新 更多