【发布时间】:2025-12-21 08:55:06
【问题描述】:
Nokogumbo gem 的 C 实现中的提交导致在 Gentoo Linux 上构建失败,但是,修改很小,不会造成任何问题。不幸的是,我在 zilch 旁边知道 C。
这是提交:
https://github.com/rubys/nokogumbo/commit/8b4446847dea5c614759684ebcae4c580c47f4ad
它只是将<> 替换为"":
-#include <gumbo.h>
-#include <error.h>
-#include <parser.h>
+#include "gumbo.h"
+#include "error.h"
+#include "parser.h"
根据GCC docs,这不会造成任何麻烦,因为它会退回到以前的行为:
#include "file"此变体用于您自己程序的头文件。它首先在包含当前文件的目录中搜索名为 file 的文件,然后在引用目录中搜索,然后在用于
<file>的相同目录中搜索。您可以使用 -iquote 选项将目录添加到引用目录列表中。
不幸的是,虽然它使用<> 编译得很好,但使用"" 构建失败:
compiling nokogumbo.c
nokogumbo.c:24:20: fatal error: parser.h: No such file or directory
#include "parser.h"
我想知道<> 和"" 的行为方式在多大程度上取决于工具链、环境和其他设置。
非常感谢您的提示!
【问题讨论】:
-
这是不合规行为。如果包含
" "失败,编译器必须再次尝试,就像您编写了< >一样。所以你的 gcc 出了点问题。 -
如何从 IDE 或命令行调用 gcc?在 IDE:s 的情况下,可能会出现一些 IDE 打嗝,它会手动创建一个包含
-I的包含路径,并且只将其传递给 gcc。命令行中的“Vanilla gcc”不应该有这些问题。
标签: c linux gcc include gentoo