-1

我正在尝试了解 Linux 内核,所以我正在阅读 Linux 内核源代码。那么如何确定头文件的位置,因为有许多头文件具有相同的名称但位于不同的目录中?

示例:它们在 fs/open.c 中包含 fcntl.h

我可以在 17 个不同的目录中找到 fcntl.h

arch/alpha/include/asm/fcntl.h
arch/arm/include/asm/fcntl.h
....
4

3 回答 3

1

通常,这将取决于包含文件的方式。如果包含这样的引号:

#include "QuotedHeader.h"

应该在同一目录中。(它也可以在“include”目录中。)
如果包含在尖括号中,如下所示:

#include <BracketedHeader.h>

它位于“包含”目录中。这些是编译器在编译时被告知搜索头文件的目录。这些可以作为参数传递,也可以在环境变量中设置。

对于提供的示例,目录清楚地说明了为什么存在重复:通常,不同的体系结构特定文件由为不同体系结构命名的文件夹分隔。
在提供的示例中,您正在查看AlphaARM架构的不同 fcntl.h 文件。编译器将使用的文件取决于正在编译的 CPU,并且编译器将被告知在编译期间使用哪个文件。

在我个人看来,如果你还不知道这一点,那么你可能从错误的地方开始理解 linux 内核。尝试先研究 C

于 2012-10-22T03:28:05.340 回答
1

您可以添加 预处理器选项CFLAGS管理内核模块的编译。特别是,-H选项(传递给gcc)显示每个#include-d 标头的路径,并且-I选项增加了搜索到的包含目录的列表。

于 2012-10-22T05:27:08.650 回答
-1

在手册页中查找头文件的名称......或谷歌它。

于 2012-10-22T03:23:36.143 回答