如何确定在特定构建中使用哪个版本的内核头文件

时间:2012-10-22 03:14:41

标签: c linux build linux-kernel header-files

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

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

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

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

3 个答案:

答案 0 :(得分:1)

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

#include "QuotedHeader.h"

位于同一目录中。 (它也可以在" include"目录中。)
如果包括尖括号,如下所示:

#include <BracketedHeader.h>

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

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

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

答案 1 :(得分:1)

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

答案 2 :(得分:-1)

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