从github下载的uboot, 编译不过,以下是解决方法
1.代码下载
https://github.com/u-boot/u-boot
2.Makefile修改
这个Makefile里面没有指定交叉编译工具,所以要安装交叉编译工具,原本我编译内核的时候使用的是
CROSS_COMPILE=arm-linux-gnueabihf-
这是个32bit的,我就开始用这个编译了,但是,不能这么干,死都编不过
所以需要安装新的编译链工具,安装方法:
sudo apt-get install gcc-aarch64-linux-gnu
为啥一定用64的呢,我感觉只能从这个图说明:
所以我就放弃32的编译器
sudo apt-get install gcc-aarch64-linux-gnu
用上述命令安装编译链,然后修改Makefile从:
# set default to nothing for native builds
ifeq ($(HOSTARCH),$(ARCH))
CROSS_COMPILE ?=
endif
到:
# set default to nothing for native builds
ifeq ($(HOSTARCH),$(ARCH))
CROSS_COMPILE ?=
endif
ARCH = arm64
CROSS_COMPILE = aarch64-linux-gnu-
内容在271行左右。
3.编译方法
要设置deconfig,我做了一个shell脚本,
make rpi_3_b_plus_defconfig
make -j
然后以后运行这个脚本方便点。
如果用了32bit编译命令或者ARCH=arm时,会有如下错误
./arch/arm/include/asm/global_data.h:130:58: error: invalid register name for ‘gd’
130 | #define DECLARE_GLOBAL_DATA_PTR register volatile gd_t *gd asm ("x18")
error: bad value (‘armv8-a+crc’) for ‘-march=’ switch
这个东西目前我没搜到正确的说明,都是抄来抄去,所以给大家闭个坑
最后编译通过截图如下,如此美妙