今天从i386内核编译转换到ARM内核编译上遇到一点细节问题,写下来:
<1> : 下载linux-2.6.23内核;
<2> : 进入linux-2.6.23内核根目录,输入make menuconfig,具体默认是哪个CPU,要参考根目录下的ARCH = (kernel type指定)
<3> : 配置好kernel后,保存退出.
<4> : make zImage即可,如果ARCH = i386,那么在ARCH/i386/boot目录下就会产生zImage镜像文件;
<5> : 上面的适合计算机等同类型的CPU,不适合ARM,那么就要编译适合ARM的内核;
<6> : 打开根目录下makefile文件编译下列字段并且保存退出
ARCH ?= arm
CROSS_COMPILE ?= arm-linux-
<7> : make mrproper
<8> : make menuconfig
<9> : make ;等待半个小时即可.
<10> : 半个小时过去,结果有错误
...
drivers/char/drm/drm_lock.c:310: undefined reference to `cmpxchg'
...
蛋疼!!!
<11> :重新配置系统,make menuconfig
在Device Driver/里选择了Direct Rendering Manager驱动,ARM里不支持这个驱动,去掉选项就可以了