2014-02-12 22 views
3

我有一個(舊)嵌入式系統,我想編譯程序。我沒有工具鏈,所以我想創建一個。如何爲「未知」嵌入式ARM系統生成內核頭文件?

嵌入式系統有一個「ARM926EJ-S rev 5(v5l)」CPU和「cat/proc/version」,說它運行GCC 4.0.2的「Linux version 2.6.20.7」。

我聽說我必須在構建過程中包含內核頭文件。我從kernel.org下載Linux內核版本2.6.20,提取所有文件並運行「make headers_install ARCH = arm INSTALL_HDR_PATH =〜/ headers」。這是正確的方式,還是我需要特定內核的頭文件?

回答

4

解壓內核。

make mrproper

make ARCH=${arch} headers_check

e.g 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

在這種情況下不會產生任何問題。

+0

@ user3226575上面的解釋清除了您的查詢,如果是這樣您可以告訴社區如此http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work/5235#5235 –

+0

謝謝這個很好的解釋。 – user3226575

1

這應該是好的,如果你使用的頭打造的libc

你可能應該運行make ARCH=arm headers_check提前了。