Build 指定内核包含头路径时";十字“-从非常旧的内核构建

Build 指定内核包含头路径时";十字“-从非常旧的内核构建,build,kernel,Build,Kernel,是的,我知道,现在已经很晚了,但是:我想在现有的2.4系统上编译一个3.2内核(长期)。是的,我需要在那里编译,对不起 问题:系统的include/头文件非常旧。2.4内核的 在构建新内核时,它会抱怨未定义的符号等 问题是它使用系统的头文件而不是自己的头文件 问题:如何指定生成过程使用自己的头文件而不是系统的头文件 谢谢:-) 更新(根据评论中的要求) 我使用的是3.2.94版(最新版本3.x): 我得到了这些错误 HOSTCC arch/x86/tools/relocs arch/x86

是的,我知道,现在已经很晚了,但是:我想在现有的2.4系统上编译一个3.2内核(长期)。是的,我需要在那里编译,对不起

问题:系统的include/头文件非常旧。2.4内核的

在构建新内核时,它会抱怨未定义的符号等

问题是它使用系统的头文件而不是自己的头文件

问题:如何指定生成过程使用自己的头文件而不是系统的头文件

谢谢:-)

更新(根据评论中的要求)

我使用的是3.2.94版(最新版本3.x):

我得到了这些错误

  HOSTCC  arch/x86/tools/relocs
arch/x86/tools/relocs.c: In function `sym_type':
arch/x86/tools/relocs.c:145: `STT_COMMON' undeclared (first use in this function)
arch/x86/tools/relocs.c:145: (Each undeclared identifier is reported only once
arch/x86/tools/relocs.c:145: for each function it appears in.)
arch/x86/tools/relocs.c:145: nonconstant array index in initializer
arch/x86/tools/relocs.c:145: (near initialization for `type_name')
arch/x86/tools/relocs.c:146: `STT_TLS' undeclared (first use in this function)
arch/x86/tools/relocs.c:146: nonconstant array index in initializer
arch/x86/tools/relocs.c:146: (near initialization for `type_name')
arch/x86/tools/relocs.c: In function `sym_visibility':
arch/x86/tools/relocs.c:176: `STV_DEFAULT' undeclared (first use in this function)
arch/x86/tools/relocs.c:176: nonconstant array index in initializer
arch/x86/tools/relocs.c:176: (near initialization for `visibility_name')
(...)
arch/x86/tools/relocs.c: In function `collect_reloc':
arch/x86/tools/relocs.c:653: `R_386_16' undeclared (first use in this function)
make[1]: *** [scripts/Makefile.host:118: arch/x86/tools/relocs] Error 1
make: *** [/root/linux-3.2.94/arch/x86/Makefile:121: archscripts] Error 2

我在寻找像STT_COMMON这样的康坦特人。它们只在内核源代码包含的include头文件中,而不是我的系统头文件中。

如何指定生成过程使用它自己的头文件而不是系统的头文件?
-默认情况下应该使用这种行为。使用您使用的确切命令和您得到的确切错误更新您的问题。我进行了更新。谢谢@TsyvarevWell,问题变得清楚了。通过操作
CC
编译内核对象,并使用内核头。但是
HOSTCC
操作编译用户空间对象,所以它应该适合您的编译器和库。因此,在
HOSTCC
中,使用的是操作系统头,而不是用于内核的头。顺便说一句,在3.2。版本包含STT_公共符号的头是
/include/linux/elf.h
(特定于内核)。但是对于现代4.+内核,头文件是
/include/uapi/linux/elf.h
,它可以用于用户事务。您知道如何从HOSTCC“切换”到CC吗?
我如何指定构建过程使用它自己的头文件而不是系统的头文件?
-默认情况下应该是这样的行为。使用您使用的确切命令和您得到的确切错误更新您的问题。我进行了更新。谢谢@TsyvarevWell,问题变得清楚了。通过操作
CC
编译内核对象,并使用内核头。但是
HOSTCC
操作编译用户空间对象,所以它应该适合您的编译器和库。因此,在
HOSTCC
中,使用的是操作系统头,而不是用于内核的头。顺便说一句,在3.2。版本包含STT_公共符号的头是
/include/linux/elf.h
(特定于内核)。但是对于现代的4.+内核,标题是
/include/uapi/linux/elf.h
,它可以用于用户事务。你知道如何从HOSTCC“切换”到CC吗?
  HOSTCC  arch/x86/tools/relocs
arch/x86/tools/relocs.c: In function `sym_type':
arch/x86/tools/relocs.c:145: `STT_COMMON' undeclared (first use in this function)
arch/x86/tools/relocs.c:145: (Each undeclared identifier is reported only once
arch/x86/tools/relocs.c:145: for each function it appears in.)
arch/x86/tools/relocs.c:145: nonconstant array index in initializer
arch/x86/tools/relocs.c:145: (near initialization for `type_name')
arch/x86/tools/relocs.c:146: `STT_TLS' undeclared (first use in this function)
arch/x86/tools/relocs.c:146: nonconstant array index in initializer
arch/x86/tools/relocs.c:146: (near initialization for `type_name')
arch/x86/tools/relocs.c: In function `sym_visibility':
arch/x86/tools/relocs.c:176: `STV_DEFAULT' undeclared (first use in this function)
arch/x86/tools/relocs.c:176: nonconstant array index in initializer
arch/x86/tools/relocs.c:176: (near initialization for `visibility_name')
(...)
arch/x86/tools/relocs.c: In function `collect_reloc':
arch/x86/tools/relocs.c:653: `R_386_16' undeclared (first use in this function)
make[1]: *** [scripts/Makefile.host:118: arch/x86/tools/relocs] Error 1
make: *** [/root/linux-3.2.94/arch/x86/Makefile:121: archscripts] Error 2