找不到 glib.h
Posted
技术标签:
【中文标题】找不到 glib.h【英文标题】:glib.h cannot be found 【发布时间】:2014-04-21 04:11:21 【问题描述】:我在编译我的 C 程序时遇到问题 当我将 frum ubunto 11 移动到 ubunto 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_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -g -Wall
-Wextra -std=c99 -lm *.c -o 格式
我收到此错误:
main.c:5:18: erreur fatale: glib.h : Aucun fichier ou dossier de ce type 编译终止。
Glib2 Dev 安装在我的机器上,但是当我检查 /usr/lib/glib-2.0/include 这个文件时,我没有找到它
我该如何解决这个问题?
【问题讨论】:
我不是 Linux 和 glib 的专家,有没有那个库的发布版本和开发版本,也许你得到了第一个 - 它可能带有用于程序执行的文件(共享libs 等)但没有头文件? 运行dpkg -L libglib2.0-dev | grep glib.h
时看到了什么?
当我运行 dpkg -L libglib2.0-dev | grep glib.h 我得到这个 ::: /usr/include/glib-2.0/glib.h
【参考方案1】:
由于您已经安装了开发包,您应该使用正确的方法来编译与 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
可以解决这个问题。
【讨论】:
【参考方案2】:如果您查看 packages.ubuntu.com,您会发现该文件位于不同的文件夹中
/usr/include/glib-2.0/glib.h libglib2.0-dev
头文件在那个路径吗?
【讨论】:
对不起,我专注于他说不在 /usr/lib/glib-2.0/include 的部分 好的,我试试这个命令 :: 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_OFFSET_BITS=64 -D_LARGEFILE_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: not a directory [默认启用] /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:参考 indéfinie 与 « g_hash_table_lookup » /home/cyrine/Bureau/Formattage32/main.c:251:参考 indéfinie 与 « g_hash_table_lookup » collect2:错误:ld 返回 1 退出状态make: *** [all] Erreur 1 现在你有一个链接错误,我猜这是进步。你确定你还有-lglib-2.0
标志吗?除了手动指定所有包含和链接的东西,您还可以尝试使用@iain 建议的pkg-config --cflags --libs glib-2.0
【参考方案3】:
确保您已安装 libglib2.0-dev
包,因为它提供了 glib.h
标头。
库包(例如libglib2.0-0
)通常只包含已编译的库,供已编译的程序使用。要使用关联库编译新程序,您需要安装关联的-dev
包,其中包含库的头文件。
【讨论】:
以上是关于找不到 glib.h的主要内容,如果未能解决你的问题,请参考以下文章