【问题标题】:Linux : Glib was not foundLinux:找不到 Glib
【发布时间】:2014-02-19 19:36:43
【问题描述】:

我有一个使用 GLib 库的示例 C 项目。在该源代码中,它使用:

#include <glib.h>

当我编译时,我发现了这个错误:“Glib.h:没有这样的文件或文件夹”。我有谷歌,发现我应该安装这个库。所以我使用这些命令:

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

之后,我检查并发现我的系统中已经存在这个头文件:usr/include/glib-2.0/glib.h 但是当我编译时,我仍然遇到上述问题。

所以我将包含行更改为:

#include <glib-2.0/glib.h>

所以,在那之后,当我编译时,我在 glib.h 标头中遇到错误:

#ifndef __G_LIB_H__
#define __G_LIB_H__

#define __GLIB_H_INSIDE__

#include <glib/galloca.h>
#include <glib/garray.h>
// more code here

glib/galloca.h : no such file or directory. 因为这个错误在系统头文件里面,我不能再修改,仍然不能编译。

我不知道如何解决这个问题。我读过一些帖子,他们改变了makefile。但是,由于我的项目是由IDE(CodeBlock)自动编译的,我并不能真正编写makefile,所以这种方法不适合我。

请告诉我解决此问题的方法。

谢谢:)

【问题讨论】:

  • @berkay 这个帖子就像我所做的那样。只需安装 glib 包。我已经安装了它:(
  • 您使用的是哪个 IDE?
  • 抱歉 :( 我已将此选项添加到我的 IDE(通过添加 -lglib)但仍然遇到该错误 :( 我应该将版本放在后面(哪个版本?)还是应该做一些其他事情对于我的 IDE(代码块)了解吗?谢谢 :)
  • 我必须承认我做过一次,但那是几天前的事了。我建议:lglib-2.0。如果这不起作用,请按照 glib hello world 示例进行操作。这应该启发你。 (就像我每天一次 :) 这个:developer.gnome.org/glib/2.37/glib-compiling.html

标签: c linux


【解决方案1】:

你的构建方式一定有问题。要编译使用 GLib 的 C 程序,您需要包 libglib2.0-dev。您可以直接安装它,也可以安装libgtk2.0-dev,将其作为依赖项引入。所以你有你需要的包。

编译 GLib 程序的正确方法是使用 -I 和 GLib 包含文件的路径。 一个例子(来自How to compile a helloworld GLib program? askubuntu):

gcc $(pkg-config --cflags --libs glib-2.0) hello_glib.c

这应该让你编译这个程序:

#include <stdio.h>
#include <glib.h>
int main(int argc, char** argv) {
     GList* list = NULL;
     list = g_list_append(list, "Hello world!");
     printf("The first item is '%s'\n", g_list_first(list)->data);
     return 0;
}

您遇到的错误表明您没有正确设置包含路径 (-I)。如何执行此操作取决于您的构建系统/IDE。


在 Code::Blocks 中,您必须在相应的配置对话框中设置包含路径和链接器选项。运行pkg-config --cflags --libs glib-2.0,会输出类似

-I/usr/include/glib-2.0 -I/usr/lib/i386-linux-gnu/glib-2.0/include  -lglib-2.0  

-I 之后的目录必须在你的项目的编译器选项中设置(应该在项目 -> 构建选项 -> 搜索目录下),-l 之后的名称必须在链接器设置中设置。另一种选择是创建一个 Makefile,并让 Code::Blocks 使用它。

参见例如Q: What do I need to know when using 3rd party libs? 在 Code::Blocks Wiki 中。

【讨论】:

  • 对于一个在这里投票给所有人的人来说答案很糟糕。当然,在 cmets 中,指向 ubuntu 帮助页面的链接就足够了。这仍然是一个悬而未决的问题:How to do this depends on your build system/IDE. 干得好!
  • @hek2mgl:对不起,如果我毁了你的一天。我在 Code::Blocks 中添加了一些关于如何解决这个问题的信息。我只投票给你回答,因为它提出了一些显然行不通的东西。无论如何,现在您的答案已被删除,我的反对票不再计入您的代表(AFAIK)。另外,请随意添加一个比我获得更多选票的更好答案:-)。
  • 别担心,我的日子很安全。 :) 在您删除该评论的那一刻,我正要单击删除按钮,因为我使用了apt-cache show libgkt2.0-dev。好的,我应该在尝试回答问题之前 完成此操作。但 imo 一个“嘿,你错过了……”的评论就足够了……
  • 在链接器设置中。运行上述命令后,我按添加并添加两个目录(因此出现在两行中)。关于-lglib-2.0,我们需要这个参数吗?谢谢:)
【解决方案2】:

您不应更改源代码(例如 #include 指令)。

您只需要使用pkg-config(使用--cflags 进行编译和使用--libs 进行链接),最好使用像make 这样的构建器程序。

This is an example 适合您的情况:Makefile 使用 pkg-config 使用 glib

编译一些源程序

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-29
    • 2016-08-31
    • 2014-06-05
    相关资源
    最近更新 更多