编译 U-Boot 时需要“built-in.o”错误

Posted

技术标签:

【中文标题】编译 U-Boot 时需要“built-in.o”错误【英文标题】:Need 'built-in.o' error when compiling U-Boot 【发布时间】:2021-10-20 00:08:13 【问题描述】:

我正在尝试为带有 armv7 处理器的开发板编译 U-Boot。它有一个瑞芯微RK3288处理器。我使用的命令是:

make evb-rk3288_defconfig export CC=/opt/workspace/sdk/gcc-arm-10.3-2021.07-z86_64-arm-none-linux-gnueabihf/bin/arm-none-linux-gnueabihf-

export CC=/opt/workspace/sdk/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-

然后

make ARCH=arm CROSS_COMPILE=$CC

当我尝试这种方式时出现错误。我得到的错误如下:

      .
      .
      .
      HOSTCC tools/lib/ecdsa/ecdsa-libcrypto.o
      HOSTCC tools/lib/rsa/rsa-sign.o
      HOSTCC tools/lib/rsa/rsa-verify.o
      HOSTCC tools/lib/rsa/rsa-mod-exp.o
      HOSTCC tools/lib/aes/aes-encrypt.o
      HOSTCC tools/lib/aes/aes-decrypt.o
      HOSTCC tools/mkimage.o
      HOSTCC tools/fit_info.o
      HOSTCC tools/fit_check_sign.o
      HOSTCC tools/proftool
      HOSTCC tools/fdtgrep.o
      HOSTCC tools/spl_size_limit
      HOSTCC tools/lib/crc8.o
      HOSTLD tools/mkenvimage
      HOSTLD tools/dumpimage
      HOSTLD tools/fit_info
      HOSTLD tools/mkimage
      HOSTLD tools/fit_check_sign
      HOSTLD tools/gen_ethaddr_crc
      HOSTLD tools/fdtgrep
      AR arch/arm/cpu/built-in.o
    make[1]: *** No rule to make target 'arch/arm/cpu/armv7/cache_v7_asm.o', needed by 'arch/arm/cpu/armv7/built-in.o'. Durdu.
    make[1]: *** Bitmemiş işler için bekliyor....
      CC arch/arm/cpu/armv7/cache_v7.o
    make[1]: *** No rule to make target 'arch/arm/lib/vectors.o', needed by 'arch/arm/lib/built-in.o'. Durdu.
    make: *** [Makefile:1814: arch/arm/lib] Error 2
    make: *** Bitmemiş işler için bekliyor....
      CC arch/arm/mach-rockchip/board.o
      CC arch/arm/mach-rockchip/cpu-info.o
      CC arch/arm/mach-rockchip/boot_mode.o
      CC arch/arm/mach-rockchip/sdram.o
      CC board/rockchip/evb_rk3288/evb-rk3288.o
      CC arch/arm/mach-rockchip/rk3288/clk_rk3288.o
      AR board/rockchip/evb_rk3288/built-in.o
      CC arch/arm/mach-rockchip/rk3288/rk3288.o
      CC arch/arm/mach-rockchip/rk3288/syscon_rk3288.o
    make: *** [Makefile:1814: arch/arm/cpu/armv7] Error 2
      AR arch/arm/mach-rockchip/rk3288/built-in.o
      AR arch/arm/mach-rockchip/built-in.o
    root@pardus:/opt/workspace/uboot#

【问题讨论】:

不要export ARCH=arm,因为这不是必需的并且可能会破坏事情。你的消息来源在哪里?这些错误意味着缺少 cache_v7_asm.S 和 vector.S。 我没有使用export ARCH=arm,现在我在制作时没有输入它,但我得到了同样的错误。我的资源:@​​987654321@、U-boot、linaro cross-compiler、arm cross-compiler。正如您所说,缺少 cache_v7_asm.S 和 vector.S 。但是,如果我不在 makefile 中暗示它们,它会给其他文件同样的错误。 为了更清楚,make ARCH=arm ... 也是错误的。并且鉴于源文件存在于 github 中,如果它不存在,则您的结帐有问题。 我猜是在使用git clone时出现了问题。正如你所说,我正确下载并开始编译而不使用make ARCH=arm。这次没有出现这个错误,又出现了一个错误,我会另开话题,谢谢。 【参考方案1】:

问题是由于 U-Boot 文件下载不完整或损坏所致。它应该可以正确下载。

编译时,make ARCH=arm 语句应该被删除。

【讨论】:

以上是关于编译 U-Boot 时需要“built-in.o”错误的主要内容,如果未能解决你的问题,请参考以下文章

Uboot启动过程详解

Uboot启动过程详解

Uboot启动过程详解

s3c2440 移值u-boot-2016.03 第4篇 支持NAND flash 识别

编译linux内核问题

2017-01-26--编译Linux内核2.6.30版本报错解决