linux-kernel之如何为 "unknown"嵌入式 ARM 系统生成内核头文件

del 阅读:18 2024-09-07 23:24:14 评论:0

我有一个(旧的)嵌入式系统,我想为其编译程序。我没有工具链,所以我想创建一个。

嵌入式系统有一个“ARM926EJ-S rev 5 (v5l)”CPU,“cat/proc/version”说它运行“Linux version 2.6.20.7”和GCC 4.0.2。

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

请您参考如下方法:

解压内核。
make mrpropermake ARCH=${arch} headers_check
例如 make ARCH=arm headers_checkmake 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。

在这种情况下不会造成任何问题。


标签:linux
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号