说明一下,是基于firefly官方的git仓库编译的:
$cd u-boot/ && ./make.sh firefly-3399
编译报错一:multiple definition of `yylloc’; scripts/dtc/dtc-lexer.lex.o:(.bss+0x0): first defined here
问题思路:rk官方的gcc版本较旧,主机上的gcc-11(ubuntu22.04)在交叉编译时出错。
解决方法:修改顶层Makefile文件,添加:
HOSTCFLAGS += -fcommon
编译报错二: relocation truncated to fit: R_AARCH64_ADR_PREL_LO21 against symbol `__rel_dyn_end’ defined in .bss_start section in u-boot
问题思路:旧的uboot(2019.04之前)只能重定位21bit的code size,换言之若uboot生成的代码段超过1MB就必定会报错。