构建busybox包括内核头文件,包含哪些文件

时间:2014-08-20 12:17:26

标签: linux build header embedded-linux busybox

我正在使用linux3.3,最近在为新命令构建busybox时,发现添加的busybox源文件使用了linux内核头文件。

所以我查了一下互联网并做了header_install ARCH = .. CROSS_COMPILE = .. INSTALL_HDR_PATH = ..'提取可用于用户空间程序的标头。

然后我在sparc-snake-linux / sys-include下使用了新的头文件而不是文件。

但我不得不将一些丢失的文件从sys-include复制到新的头目录,并且必须将sys-include文件中的一些缺失定义复制到新头文件中的相应文件中。(在互联网上的某个地方)我读过这个' make headers_install'在linux2.6之后没有升级)

这是我应该做的吗? (为什么会有一些丢失的文件?我认为它是因为“make headers_install'维护得不好而且对于2.6之后的版本不能正常工作?我是否正确?”

使用这种方法,我删除了数十个未定义的'错误,但现在我看到sparc-snake-linux / sys-include(当然是新的清理版和增强版)和sparc-snake-linux / include文件之间存在一些定义冲突。应该使用什么版本?

如果我成功编译(通过修复标头问题),我是否必须使用这个新的头文件再次构建glibc? (我很害怕它。我正在使用glibc进行忙碌)

任何帮助都会深深感激。

谢谢

ADD:我使用上面的命令提取了新的头文件,并使用新添加的命令(路由和其他IP相关功能)构建了busybox。它工作正常,它没有工作的原因是我为busybox定义了变量 KERNEL ,不应该这样做(因为busybox不是内核代码,而是用户程序)。

1 个答案:

答案 0 :(得分:0)

我使用上面的命令提取了新的头文件,并使用新添加的命令(路由和其他IP相关功能)构建了busybox。它运行正常,它不起作用的原因是我愚蠢地为busybox定义了一段时间的变量_KERNEL_,这不应该完成(因为busybox不是内核代码,而是用户程序)。 当你使用
时 echo“”| arch-abc-linux-gcc -o /tmp/tmp.o -v -x c -
你可以看到标准包含的路径是什么。如果交叉编译器用于在linux上编译应用程序(如上所述),它将在标准包含路径中具有linux系统头路径。将其替换为新提取的标头路径。我所做的是使用-nostdinc选项并明确提供包含路径。