Linux:找不到Glib

时间:2014-02-19 19:36:43

标签: c linux

我有一个使用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,所以这个方法不适合我。

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

谢谢:)

2 个答案:

答案 0 :(得分:4)

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

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

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之后的目录必须在项目的编译器选项中设置(应在Project - &gt; Build Options - &gt; Search Directories下),并且必须设置-l之后的名称在链接器设置中。另一种选择是创建一个Makefile,让Code :: Blocks使用它。

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

答案 1 :(得分:1)

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

您只需使用pkg-config(用于编译,--cflags,用于链接,--libs),最好使用make等构建程序。< / p>

This is an example完全符合您的情况:Makefile使用pkg-config使用 glib 编译某些源程序