Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 找不到glib.h_C_Ubuntu_Gcc_Glib - Fatal编程技术网

C 找不到glib.h

C 找不到glib.h,c,ubuntu,gcc,glib,C,Ubuntu,Gcc,Glib,我在编译C程序时遇到问题 当我将frum UBTO 11移动到UBTO 13时,会出现此问题 使用此makefile编译时: gcc-D_GNU_SOURCE-I/usr/include/glib-2.0-I/usr/lib/glib-2.0/include-I/usr/lib/x86_64- linux gnu/glib-2.0/include/-lglib-2.0-D_文件\u偏移量\u位=64-D_大文件\u源-g-Wall -Wextra-std=c99-lm*.c-o格式 我得到这个错

我在编译C程序时遇到问题 当我将frum UBTO 11移动到UBTO 13时,会出现此问题

使用此makefile编译时:

gcc-D_GNU_SOURCE-I/usr/include/glib-2.0-I/usr/lib/glib-2.0/include-I/usr/lib/x86_64-

linux gnu/glib-2.0/include/-lglib-2.0-D_文件\u偏移量\u位=64-D_大文件\u源-g-Wall

-Wextra-std=c99-lm*.c-o格式

我得到这个错误:

main.c:5:18:Errer fatale:glib.h:Aucun fichier您的档案类型 编译术语

Glib2 Dev安装在我的机器上,但是当我检查/usr/lib/glib-2.0/include这个文件时,我没有找到它


如何修复此问题?

如果查看packages.ubuntu.com,该文件似乎位于不同的文件夹中

/usr/include/glib-2.0/glib.h    libglib2.0-dev

头文件是否在该路径上?

确保安装了
libglib2.0-dev
包,因为这就是提供
glib.h
头文件的原因


库包(如
libglib2.0-0
)通常只包含已编译的库,供已编译的程序使用。要使用关联的库编译新程序,您需要安装关联的
-dev
包,其中包含库的头文件。

安装了开发包后,您应该使用正确的方式编译与Glib链接的程序,即使用
pkg config
为您的系统获取正确的值

如果将Makefile更改为以下内容:

gcc -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -g -Wall -Wextra -std=c99 -lm *.c -o formattage `pkg-config --cflags --libs glib-2.0`
然后它会找到正确的文件


不同的系统和体系结构将文件安装在不同的位置,为了允许您安装多个版本的Glib,文件将被放置在特殊的目录中。使用
pkg-config
解决了这个问题。

我不是Linux和glib的专家,这个库有发布版本和开发版本吗?也许你得到了第一个版本,它可能附带程序执行文件(共享库等)但是没有头文件吗?当你运行
dpkg-L libglib2.0-dev|grep glib.h
?当我运行dpkg-L libglib2.0-dev|grep glib.h时,你会看到什么::/usr/include/glib-2.0/glib.hSorry我把注意力集中在他说不在/usr/lib/glib-2.0/includeOk的部分,我尝试使用以下命令::gcc-D_GNU_SOURCE-i/usr/include/glib-2.0-i/usr/include/glib-2.0/glib.h-i/usr/lib/x86_64-linux-GNU/glib-2.0/include/-lglib-2.0-D_FILE\u OFFSET\u BITS=64-D_LARGEFILE\u SOURCE-g-Wall-Wextra-std=c99-lm*.c-o formattage但始终存在相同的问题,请首先告诉我们头文件是否位于上面的路径。如果安装了libglib2.0-dev包。您以前的命令没有问题。好的,这里不是相同的错误:gcc-D_GNU_SOURCE-I/usr/include cc1:warning:/usr/include/glib-2.0/glib.h:不是目录[默认启用]/tmp/ccHvXi7J.o:dans la fonction«hashSeqFct»:/home/cyrine/Bureau/Formattage32/main.c:16:référence vers«g_str_hash»/tmp/ccHvXi7J.o:dans la fonction«eqSeqFct»:/home/cyrine/Bureau/Formattage32/main.c:24:référence ind fine vers fine«g gu hash tableu lookup»home/home/cyrine/Bureau/formattag2/main.c:251:vers«g_hash_table_lookup»collect2:错误:ld返回1退出状态make:**[all]Erreur 1现在您有一个链接错误,我猜这是进度。您确定仍然具有
-lglib-2.0
标志吗。您可以尝试使用@iain建议的
pkg config--cflags--libs glib-2.0
,而不是手动指定所有包含和链接的内容