gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:38:25 24 4
gpt4 key购买 nike

我用 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.0gcc 之后我只是通过 gcc test.c -o test 编译我的文件?

最佳答案

没有。

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

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

pkg-config 工具可以帮助了解每个库的使用机制,但仍然由您来决定(通过模块名称参数)< em>要使用哪些确切的库。

关于c - GCC 如何自动知道包含 glib 库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21576345/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com