首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Linux :找不到Glib

Linux :找不到Glib
EN

Stack Overflow用户
提问于 2014-02-20 03:36:43
回答 2查看 21.4K关注 0票数 7

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

代码语言:javascript
复制
#include <glib.h>

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

代码语言:javascript
复制
apt-get install libgtk2.0-dev
apt-get install glade

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

因此我将include行更改为:

代码语言:javascript
复制
#include <glib-2.0/glib.h>

因此,在此之后,当我编译时,我在glib.h头中遇到错误:

代码语言:javascript
复制
#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。但是,因为我的项目是由集成开发环境(CodeBlock)自动编译的,并且我不能真正地编写makefile,所以该方法不适合我。

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

谢谢:)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-20 03:51:36

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

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

代码语言:javascript
复制
gcc $(pkg-config --cflags --libs glib-2.0) hello_glib.c

这样你就可以编译这个程序了:

代码语言:javascript
复制
#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,它将输出类似于

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

票数 10
EN

Stack Overflow用户

发布于 2014-02-20 03:52:59

你不应该改变你的源代码(例如#include指令)。

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

适用于您的情况的This is an example:使用pkg-config编译某些使用glib的源程序的Makefile

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

https://stackoverflow.com/questions/21890576

复制
相关文章

相似问题

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