gcc如何自动知道包含glib库

我在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库所以不需要在gcc之后给出标志pkg-config --cflags --libs glib-2.0并简单地通过gcc test.c -o test编译我的文件?

没有。

查看C源代码并确定它使用哪些库的问题非常困难。 这对我来说感觉有点“AI完成” ,这就是为什么它通常由程序员手动解决,指出完全正确的库以满足依赖性。

仅仅为了glib,很容易想象一个安装了glib 1.x和2.x版本的系统,并且有些调用的名称完全相同。 现在尝试想象一个计算机程序能够破坏你的意思,链接哪个库。 这是不可能的,因为只有程序员知道。

pkg-config工具有助于了解每个库所需的机制以便使用,但是仍然可以告诉它(通过模块名称参数)要使用哪些精确的库。