内核:
一:解压内核源代码
二:打补丁:patch(可选)
三:修改makefile:
在makefile里找到下面的两行:
ARCH ?= $(SUBARCH)
CROSS_COMPILE ?=
修改成如下两行:
ARCH ?= arm
CROSS_COMPILE ?= arm-linux-
(ps:上面这样修改的意思是说我们的目标平台是 arm,使用的交叉编译器的前缀是arm-linux-)
四:配置(3种方法):
1、直接make menuconfig;从头到尾每一项都自己去配置,
2、使用默认的配置,在该配置基础上自己修改;
例如:直接在主目录下用make s3c2410_defconfig,就会生成.config文件,则就可以用menuconfig配置内核
3、使用厂家提供的配置文件;
即:把config文件夹里面的*deconfig复制到主目录下.config;然后用make menuconfig
例如:cp arch/arm/configs/s3c2410_defconfig .config ;make menuconfig
五、编译内核:
(ps:目的是生成
1、make或make zImage;则会在boot/arch/arm目录生成zImage文件;这个文件就是内核的镜像文件。要经过处理,才可以供uboot引导,以启动内核。编译 U-Boot 时在源代码的 tools 目录下会生成一个 mkimage 可执行文件,用这个工具可以对前面编译内核时生成的 zImage 进行处理,以供 U-Boot 启动。把 mkimage 拷 贝 到 一 个 目 录 下 , 比 如内核源码目录, 把 上 面 编 译 生 成 的zImage 也拷贝到该目录下,运行如下命令生成 uImage:
./mkimage -A arm -T kernel -C none -O linux -a 0x30008000 -e 0x30008040 -d zImage -n 'Linux-2.6.24' uImage
ps:mkimage的用法:
{-A arm 目标平台是ARM构架的
-T kernel 要处理的是内核
-C none 不采用任何压缩方式
-O linux 要处理的Linux内核
-a 0x30008000 加载地址,包括mkimage工具给内核添加的头信息
-e 0x30008040 真正的内核入口地址,不包括添加的0x40长度的头信息
-d zImage 使用的源文件是编译Linux内核得到的zImage
-n ‘linux-2.6.24’生成的内核镜像的名字uImage 生成的供U-Boot启动的二进制内核镜像
}
2、make uImage;