如何为"未知"嵌入式ARM系统生成内核头?

use*_*575 3 cross-compiling linux-kernel embedded-linux

我有一个(旧的)嵌入式系统,我想编译它.我没有工具链,所以我想创建一个.

嵌入式系统有一个"ARM926EJ-S rev 5(v5l)"CPU和"cat/proc/version"表示它使用GCC 4.0.2运行"Linux版本2.6.20.7".

我听说我必须在构建过程中包含内核头文件.我从kernel.org下载Linux内核版本2.6.20,解压缩所有文件并运行"make headers_install ARCH = arm INSTALL_HDR_PATH =〜/ headers".这是正确的方法还是我需要特定内核的头文件?

vin*_*yal 5

解开内核.

make mrproper

make ARCH=${arch} headers_check

例如 make ARCH=arm headers_check

make ARCH=${CLFS_ARCH} INSTALL_HDR_PATH=dest headers_install

这是从内核获取头文件的步骤.

内核头文件的目的是 - > C库和编译的程序需要与内核交互,即可用系统调用及其编号,常量定义,数据结构等.因此,编译C库需要内核头文件和许多应用程序也要求他们.

do I need the header files of the specific kernel?

kernel-to-userspace ABI是向后兼容

- > 1)使用内核生成工具链的二进制文件headers older than the running kernel will work without problem,但won't be able要使用new system calls, data structures,等.

- > 2)使用内核头文件而newer 不是正在运行的内核使用工具链生成的二进制文件如果不使用最近的功能可能会起作用,否则就会起作用will break.

---> 3)除非需要访问新的内核功能,否则使用latest内核头文件not necessary

所以在你的情况下内核版本是 "Linux version 2.6.20.7"

您可以使用Linux内核版本的内核头文件2.6.202.6.21来自kernel.org.

在这种情况下不会产生任何问题.