出現的問題:編譯的時候提示缺少頭檔案 mmzone.h ....bounds.h...等
include/linux/mmzone.h:18:26: error: linux/bounds.h: No such file or directory
include/linux/mmzone.h:197:5: warning: "MAX_NR_ZONES" is not defined
原因:bounds.h是在編譯核心時生成的,類似于編譯産生的.o檔案,如果你運作"make clean" or "make distclean",這個檔案就會被清除掉(詳情檢視核心Makefile)。是以,如果再利用此核心源碼編譯核心子產品,如果有涉及bounds.h,就會出現找不到該檔案的錯誤。
解決:獨立核心目錄之外編譯子產品時,要確定makefile檔案中所定義的核心源代碼樹已經make過一遍,且沒有make clean。這樣就不會清除生成的bound.h頭檔案,這個檔案是生成子產品必須的。
或者"make prepare"
這樣就會重新生成bounds.h,搞定了!
再看看其内容:
#ifndef __LINUX_BOUNDS_H__
#define __LINUX_BOUNDS_H__
#define NR_PAGEFLAGS 19
#define MAX_NR_ZONES 3
#endif