【发布时间】:2014-02-05 11:44:15
【问题描述】:
我在 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 编译我的文件?
【问题讨论】:
-
了解如何使用
make。请参阅this answer 来回答一个非常相似的问题。并且不要将您的可执行文件命名为test;它是一个有用的内置 shell,或/usr/bin/test,参见 test(1)... -
是的,我知道
make。我只是通过make test pkg-config --cflags --libs glib-2.0编译我的源代码。并感谢建议在二进制和内置 shell 之间进行名称混淆。 -
只需要写一个
Makefile(一次,然后用代码升级它)然后输入make来构建你的程序。
标签: c linux gcc ubuntu-12.04 glibc