找不到 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的主要内容,如果未能解决你的问题,请参考以下文章

致命错误:glib.h:使用 vscode 和 mingw 时没有这样的文件或目录

找不到localhostweb页面

java为啥每次都是找不到文件。找不到文件?

java 枚举 找不到符号

bat系统找不到指定文件怎么办?

java package找不到符号