linux2.6.21 make zImage时出现的错误

本文解决Linux内核编译过程中的三个常见问题:EABI配置错误、rtc_lock未定义及make zImage/xipImage失败。提供了详细的解决步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.invalid option `abi=aapcs-linux'选项错误
scripts/kconfig/conf -s arch/arm/Kconfig
  CHK     include/linux/version.h
  SYMLINK include/asm-arm/arch -> include/asm-arm/arch-s3c2410
make[1]: `include/asm-arm/mach-types.h' is up to date.
  CHK     include/linux/utsrelease.h
  CC      arch/arm/kernel/asm-offsets.s
cc1: error: invalid option `abi=aapcs-linux'
make[1]: *** [arch/arm/kernel/asm-offsets.s] Error 1
make: *** [prepare0] Error 2
 
解决的方法
You're building an EABI kernel with an OABI compiler. You can either turn off the EABI option in your config file (Kernel Features->Use EABI),or, you can use an EABI toolchain such as the ARM/GNU Linux one from <http://www.codesourcery.com/gnu_toolchains/arm/download.html>.I recommend the latter, because then you can run Arjan's new images.
上述的关掉EABI选项可以通过测试

2.
`rtc_lock'未定义错误(未完全解决)
drivers/built-in.o(.text+0x281e4):drivers/char/nvram.c:350: more undefined references to `rtc_lock' follow
查找
drivers/char /nvram.c有关的rtc_lock定义,发现2.6.21与以往的kernel不同,于是在包含文件中查找,在include/linux /mc146818rtc.h中发现了rtc_lock的定义,但是有一个__KERNEL__的条件编译选项,去掉这个条件编译选项,再make zImage,但是问题好像依然存在,继续在 drivers/char/nvram.c中增加这个定义spinlock_t rtc_lock;再编译,发现编译通过。

3.make zImage和make xipImage
Kernel configured for XIP (CONFIG_XIP_KERNEL=y)
Only the xipImage target is available in this case
make[1]: *** [arch/arm/boot/zImage] Error 1
make: *** [zImage] Error 2
好 象是make menuconfig的时候Boot  options--->Kernel Execte-In-Place from ROM选项问题,去掉这个选项编译通过(如果是make xopImage时則需要将这个选项选上),最终成功编译了make zImage。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值