GCC 如何自动知道包含 glib 库?

2023-12-10

我用 C 语言编写了一个简单的程序,它使用glib.h,但是当我编译它时,我收到如下错误:

$ gcc test.c -o test

test.c:3:18: fatal error: glib.h: No such file or directory
compilation terminated.

所以从上面看来GCC找不到glib.h文件(它是libglib2.0-dev包并已经安装)。所以首先我尝试找到glib.h我的系统中的文件并发现输出如下:

$ locate glib.h

/usr/src/linux-headers-3.2.0-29-generic-pae/include/config/blk/dev/bsglib.h
/usr/src/linux-headers-3.2.0-48-generic-pae/include/config/blk/dev/bsglib.h
/usr/src/linux-headers-3.2.0-57-generic-pae/include/config/blk/dev/bsglib.h

然后我尝试了命令:

$ pkg-config --cflags glib-2.0

-I/usr/include/glib-2.0 -I/usr/lib/i386-linux-gnu/glib-2.0/include

获得 GCC 的正确标志,但仍然显示相同的错误。

所以我试图从 SO 中找到解决方案,并找到了一个确切的解决方案,例如:

$ gcc test.c -Wall -o test `pkg-config --cflags --libs glib-2.0`

这个命令解决了我的问题。

但是有没有办法告诉 GCC 包含 glib 库,这样就不需要给出标志pkg-config --cflags --libs glib-2.0 after gcc我只是编译我的文件gcc test.c -o test?


No.

查看 C 源代码并弄清楚它使用了哪些库是非常困难的。感觉有点像“人工智能完成”对我来说,这就是为什么它通常由程序员手动解决,指出正确的库来满足依赖关系。

就 glib 而言,很容易想象一个系统同时安装了 glib 1.x 和 2.x 版本,并且某些调用的命名完全相同。现在尝试想象一个计算机程序能够推断出您的意思,即与哪个库链接。这是不可能的,因为只有程序员知道。

The pkg-config工具有助于了解每个库使用所需的机制,但仍由您来告诉它(通过模块名称参数)which要使用的确切库。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

GCC 如何自动知道包含 glib 库? 的相关文章

随机推荐