C 找不到glib.h
我在编译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这个文件时,我没有找到它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格式 我得到这个错
如何修复此问题?如果查看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
,而不是手动指定所有包含和链接的内容