【问题标题】: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”编译时出错 -> <galloca.h> not found
【发布时间】:2020-07-16 23:57:12
【问题描述】:

我尝试使用“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。

【问题讨论】:

标签: linux compiler-errors shared-libraries glib


【解决方案1】:

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

也许你想要-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 中已经看起来正确,只有子目录是错误的

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

Wer mit seinem Latein am Endeist, muss Griechisch sprechen。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-04
    • 2022-01-13
    • 1970-01-01
    • 1970-01-01
    • 2011-11-27
    • 2017-11-18
    • 2012-08-29
    相关资源
    最近更新 更多