我有一个使用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
header中遇到错误:
#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,因此该方法不适合我。
请告诉我解决此问题的方法。
谢谢 :)
您的建造方式一定存在一些问题。要编译使用GLib的C程序,您需要package libglib2.0-dev
。您既可以直接安装它,也可以安装installlibgtk2.0-dev
来将其作为依赖项拉入。这样您便拥有了所需的软件包。
编译GLib程序的正确方法是使用-I
GLib包含文件的路径。一个示例(来自askubuntu上的“如何编译helloworld GLib程序? ”):
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-> Build Options-> Search Directories下),并且之后的名称-l
必须在链接器设置中设置。另一个选择是创建一个Makefile,然后让Code :: Blocks使用它。
参见例如Q:使用第三方库时我需要知道什么?在Code :: Blocks Wiki中。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句