解决u-boot 2016.11 ”ERROR: Makefile:1385: recipe for target 'checkarmreloc' failed”

本文介绍了解决U-Boot-2016.05编译时出现的contains unexpected relocations错误的方法。通过查找并注释掉特定的检查项,使编译能够顺利完成。

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

在编译u-boot-2016.05时出现如下问题:

这里写图片描述

解决办法:
搜索 “u-boot contains unexpected relocations”,没有搜索到任何内容,那么我们再尝试搜索checkarmreloc:

lvxiaoliang@lvxiaoliang-virtual-machine:~/Ftp/tmp/u-boot-2016.05$ grep "checkarmreloc" * -nR

arch/arm/config.mk:111:ALL-y += checkarmreloc

Makefile:1384:checkarmreloc: u-boot

在顶层Makefile中有如下语句:

#########################################################################

# ARM relocations should all be R_ARM_RELATIVE (32-bit) or
# R_AARCH64_RELATIVE (64-bit).
checkarmreloc: u-boot
        @RELOC="`$(CROSS_COMPILE)readelf -r -W $< | cut -d ' ' -f 4 | \
                grep R_A | sort -u`"; \
        if test "$$RELOC" != "R_ARM_RELATIVE" -a \
                 "$$RELOC" != "R_AARCH64_RELATIVE"; then \
                echo "$< contains unexpected relocations: $$RELOC"; \
                false; \
        fi

env: scripts_basic
        $(Q)$(MAKE) $(build)=tools/$@

tools-only: scripts_basic $(version_h) $(timestamp_h)
        $(Q)$(MAKE) $(build)=tools

tools-all: export HOST_TOOLS_ALL=y
tools-all: env tools ;

cross_tools: export CROSS_BUILD_TOOLS=y
cross_tools: tools ;

.PHONY : CHANGELOG
CHANGELOG:
        git log --no-merges U-Boot-1_1_5.. | \
        unexpand -a | sed -e 's/\s\s*$$//' > $@

#########################################################################                                             

那么我们就别编译checkarmreloc了,所以我们注释掉arch/arm/config.mk的第111行:

#ALL-y += checkarmreloc

然后就能编译通过了
Error: arch/arm64/boot/dts/rockchip/rk3399-nanopi4-common.dtsi:384.15-26 syntax error FATAL ERROR: Unable to parse input tree scripts/Makefile.lib:320: recipe for target 'arch/arm64/boot/dts/rockchip/rk3399-nanopi4-rev04.dtb' failed make[2]: *** [arch/arm64/boot/dts/rockchip/rk3399-nanopi4-rev04.dtb] Error 1 make[2]: *** 正在等待未完成的任务.... Error: arch/arm64/boot/dts/rockchip/rk3399-nanopi4-common.dtsi:384.15-26 syntax error FATAL ERROR: Unable to parse input tree scripts/Makefile.lib:320: recipe for target 'arch/arm64/boot/dts/rockchip/rk3399-nanopi4-rev06.dtb' failed make[2]: *** [arch/arm64/boot/dts/rockchip/rk3399-nanopi4-rev06.dtb] Error 1 Error: arch/arm64/boot/dts/rockchip/rk3399-nanopi4-common.dtsi:384.15-26 syntax error FATAL ERROR: Unable to parse input tree CHK include/generated/compile.h scripts/Makefile.lib:320: recipe for target 'arch/arm64/boot/dts/rockchip/rk3399-nanopi4-rev21.dtb' failed make[2]: *** [arch/arm64/boot/dts/rockchip/rk3399-nanopi4-rev21.dtb] Error 1 Error: arch/arm64/boot/dts/rockchip/rk3399-nanopi4-common.dtsi:384.15-26 syntax error FATAL ERROR: Unable to parse input tree scripts/Makefile.lib:320: recipe for target 'arch/arm64/boot/dts/rockchip/rk3399-nanopi4-rev00.dtb' failed make[2]: *** [arch/arm64/boot/dts/rockchip/rk3399-nanopi4-rev00.dtb] Error 1 Error: arch/arm64/boot/dts/rockchip/rk3399-nanopi4-common.dtsi:384.15-26 syntax error FATAL ERROR: Unable to parse input tree scripts/Makefile.lib:320: recipe for target 'arch/arm64/boot/dts/rockchip/rk3399-nanopi4-rev07.dtb' failed make[2]: *** [arch/arm64/boot/dts/rockchip/rk3399-nanopi4-rev07.dtb] Error 1 Error: arch/arm64/boot/dts/rockchip/rk3399-nanopi4-common.dtsi:384.15-26 syntax error FATAL ERROR: Unable to parse input tree scripts/Makefile.lib:320: recipe for target 'arch/arm64/boot/dts/rockchip/rk3399-nanopi4-rev01.dtb' failed make[2]: *** [arch/arm64/boot/dts/rockchip/rk3399-nanopi4-rev01.dtb] Error 1 scripts/Makefile.build:484: recipe for target 'arch/arm64/boot/dts/rockchip' failed make[1]: *** [arch/arm64/boot/dts/rockchip] Error 2 arch/arm64/Makefile:127: recipe for target 'dtbs' failed make: *** [dtbs] Error 2 make: *** 正在等待未完成的任务....
03-08
processing option: kernel ============Start build kernel============ TARGET_ARCH =arm64 TARGET_KERNEL_CONFIG =rockchip_linux_defconfig TARGET_KERNEL_DTS =itop-3399_linux-lvds ========================================== # # No change to .config # arch/arm64/Makefile:36: Detected assembler with broken .inst; disassembly will be unreliable arch/arm64/Makefile:36: Detected assembler with broken .inst; disassembly will be unreliable GEN arch/arm64/include/generated/asm/cpucaps.h GEN arch/arm64/include/generated/asm/sysreg-defs.h DTC arch/arm64/boot/dts/rockchip/itop-3399_linux-lvds.dtb warning: ld does not support --fix-cortex-a53-843419; kernel may be susceptible to erratum warning: LSE atomics not supported by binutils Error: arch/arm64/boot/dts/rockchip/itop-3399_linux-lvds.dts:206.65-66 syntax error FATAL ERROR: Unable to parse input tree scripts/Makefile.lib:423: recipe for target 'arch/arm64/boot/dts/rockchip/itop-3399_linux-lvds.dtb' failed make[3]: *** [arch/arm64/boot/dts/rockchip/itop-3399_linux-lvds.dtb] Error 1 scripts/Makefile.build:503: recipe for target 'arch/arm64/boot/dts/rockchip' failed make[2]: *** [arch/arm64/boot/dts/rockchip] Error 2 Makefile:1466: recipe for target 'rockchip/itop-3399_linux-lvds.dtb' failed make[1]: *** [rockchip/itop-3399_linux-lvds.dtb] Error 2 make[1]: *** Waiting for unfinished jobs.... CC scripts/mod/empty.o HOSTCC scripts/mod/mk_elfconfig CC scripts/mod/devicetable-offsets.s gcc: error: unrecognized command line option ‘-mlittle-endian’ gcc: error: unrecognized command line option ‘-mgeneral-regs-only’ scripts/Makefile.build:250: recipe for target 'scripts/mod/empty.o' failed make[2]: *** [scripts/mod/empty.o] Error 1 make[2]: *** Waiting for unfinished jobs.... gcc: error: unrecognized command line option ‘-mlittle-endian’ gcc: error: unrecognized command line option ‘-mgeneral-regs-only’ scripts/Makefile.build:118: recipe for target 'scripts/mod/devicetable-offsets.s' failed make[2]: *** [scripts/mod/devicetable-offsets.s] Error 1 Makefile:1283: recipe for target 'prepare0' failed make[1]: *** [prepare0] Error 2 arch/arm64/Makefile:221: recipe for target 'itop-3399_linux-lvds.img' failed make: *** [itop-3399_linux-lvds.img] Error 2 ====Build kernel failed!====
最新发布
07-26
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值