使用 "gcc $(pkg-config --cflags --libs glib-2.0) context.c" 编译时出错 -> <galloca.h> 未找到

Error when compiling with "gcc $(pkg-config --cflags --libs glib-2.0) context.c" -> <galloca.h> not found

我试图用“gcc $(pkg-config --cflags --libs glib-2.0)”context.c.

编译我的 context.c 文件

但是因为没有找到galloca头文件所以不行:

context.c:3:10: 致命错误: galloca.h: 找不到文件或目录 #include

我尝试了“gcc $(pkg-config --cflags --libs glib-2.0 glib)”,其中 galloca.h 位于 /usr/include/glib-2.0/glib。但是编译命令加上glib后,连glib.h都找不到了,在/usr/include/glib-2.0.

我尝试使用“export PKG_CONFIG_PATH=/usr/include/glib-2.0/gio/pkgconfig”等将所有必要的路径添加到 PKG_CONFIG_PATH 等等....没有成功。

我还将所有必要的库路径添加到 /etc/ld。so.conf 和 sudo ldconfig -v,也没有成功。

这不是我第一次遇到这个问题,在编译时在这个系统上找不到必要的库,但正如我们在德国所说:“我在我的拉丁文末尾”,所以我不知道如何解决这个问题,如果有任何帮助,我们将不胜感激。

提前致谢。

PS:我使用 raspberry pi 4B 8GB 和 raspbian linux.

你的库路径不会帮助它找到包含文件。

也许你想要-I/usr/include/glib-2.0 -I/usr/include/glib-2.0/glib

也许您的构建脚本接受 CFLAGS 环境变量,您可以在其中放置此选项。

或者您可能更改(编辑)源代码,

#include <galloca.h>

成为

#include <glib/galloca.h>

因为它在 /usr/include/glib-2.0 中看起来是正确的,只有子目录是错误的

之后您会发现是否还必须为库设置一些路径。不过一件一件的,先编译,再操心link。你说的是ld.so.conf。这实际上是针对运行时的,但是好吧,在构建时它是尝试其他所有方法后的最后一个选项(参见 man ld 并搜索 ld.so.conf)。真正对于构建时间库路径,你想要 -L 选项可能与 LDFLAGS 环境变量。但正如我所说,首先尝试编译,然后发现是否 link 问题。

Wer mit seinem Latein am Ende ist, muss Griechisch sprechen.