linux-kernel之如何为 "unknown"嵌入式 ARM 系统生成内核头文件
我有一个(旧的)嵌入式系统,我想为其编译程序。我没有工具链,所以我想创建一个。
嵌入式系统有一个“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 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.20
或 2.6.21
来自 kernel.org。
在这种情况下不会造成任何问题。
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。