如何为“未知”嵌入式ARM系统生成内核头文件?

时间:2014-02-12 21:56:20

标签: linux-kernel cross-compiling 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”。这是正确的方法还是我需要特定内核的头文件?

2 个答案:

答案 0 :(得分: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"

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

在这种情况下,

不会产生任何问题。

答案 1 :(得分:1)

如果您使用标头构建libc

,那应该没问题

您也应该预先运行make ARCH=arm headers_check