在 Linux/POSIX 系统上安装 C 头文件 2.3 搜索路径

我有一个带有 foo.hbar()baz() 函数的标头 qux()。我应该在哪里复制它/我必须做什么才能将它包含在 C 程序中,如其他系统范围的头文件,如 stdio.h、unistd.h 等?

zhibudao 回答:在 Linux/POSIX 系统上安装 C 头文件 2.3 搜索路径

来自 the GCC documentation(我假设您正在使用 GCC,因为您包含了 Linux 标签):

2.3 搜索路径

GCC 在几个不同的地方寻找标题。在一个普通的 Unix 系统上,如果你不另外指示它,它会寻找用 #include 请求的头文件:

/usr/local/include
libdir/gcc/target/version/include
/usr/目标/include
/usr/include

[...] 在上面,target 是 GCC 被配置为编译代码的系统的规范名称;通常但不总是与它运行的系统的规范名称相同。 version 是正在使用的 GCC 版本。

所以这主要回答了您的问题。但实际上,您可能不应该将非系统标头放在 /usr/include 之类的地方。大多数情况下,最好将程序的标题保存在项目的 include 子目录中。然后告诉 GCC 如何找到这些文件,如下所示:

您可以使用 -Idir 命令行选项添加到此列表中。在默认目录之前按从左到右的顺序搜索所有以 -I 命名的目录。唯一的例外是默认情况下已经搜索了 dir。在这种情况下,该选项将被忽略,系统目录的搜索顺序保持不变。

[...]

还要记住 #include "file.h"#include <file.h> 之间的区别

GCC 首先在包含当前文件的目录中查找使用 #include "file" 请求的标头,然后在 -iquote 选项指定的目录中查找,然后在相同的位置查找请求的标头带尖括号。例如,如果 /usr/include/sys/stat.h 包含 #include "types.h",GCC 首先在 types.h 中查找 /usr/include/sys,然后在其通常的搜索路径中。 [...]

本文链接:https://www.f2er.com/288.html

大家都在问