【问题标题】:error compiling linux kernel using buildroot toolchain使用 buildroot 工具链编译 linux 内核时出错
【发布时间】:2021-03-19 10:36:32
【问题描述】:

我正在尝试使用我的 buildroot 工具链 (2020.08.2) 编译 linux 内核 v5.9.12,但我不断收到与 libfdt 相关的错误。我不知道如何解决这个问题,而且我已经把头撞在墙上好几个小时了。

username@local:~/linux-stable$ make ARCH=arm CROSS_COMPILE=arm-linux- -j64 
  CALL    scripts/atomic/check-atomics.sh
  CALL    scripts/checksyscalls.sh
  CHK     include/generated/compile.h
  Kernel: arch/arm/boot/Image is ready
  AS      arch/arm/boot/compressed/piggy.o
  CC      arch/arm/boot/compressed/fdt_ro.o
In file included from arch/arm/boot/compressed/../../../../lib/fdt_ro.c:2,
                 from arch/arm/boot/compressed/fdt_ro.c:2:
arch/arm/boot/compressed/../../../../lib/../scripts/dtc/libfdt/fdt_ro.c: In function ‘fdt_generate_phandle’:
arch/arm/boot/compressed/../../../../lib/../scripts/dtc/libfdt/fdt_ro.c:149:13: error: ‘FDT_MAX_PHANDLE’ undeclared (first use in this function)
  149 |  if (max == FDT_MAX_PHANDLE)
      |             ^~~~~~~~~~~~~~~
arch/arm/boot/compressed/../../../../lib/../scripts/dtc/libfdt/fdt_ro.c:149:13: note: each undeclared identifier is reported only once for each function it appears in
arch/arm/boot/compressed/../../../../lib/../scripts/dtc/libfdt/fdt_ro.c: In function ‘fdt_get_mem_rsv’:
arch/arm/boot/compressed/../../../../lib/../scripts/dtc/libfdt/fdt_ro.c:182:13: error: implicit declaration of function ‘fdt64_ld’ [-Werror=implicit-function-declaration]
  182 |  *address = fdt64_ld(&re->address);
      |             ^~~~~~~~
arch/arm/boot/compressed/../../../../lib/../scripts/dtc/libfdt/fdt_ro.c: In function ‘fdt_get_property_by_offset_’:
arch/arm/boot/compressed/../../../../lib/../scripts/dtc/libfdt/fdt_ro.c:371:11: error: implicit declaration of function ‘fdt32_ld’ [-Werror=implicit-function-declaration]
  371 |   *lenp = fdt32_ld(&prop->len);
      |           ^~~~~~~~
cc1: some warnings being treated as errors
make[2]: *** [scripts/Makefile.build:283: arch/arm/boot/compressed/fdt_ro.o] Error 1
make[1]: *** [arch/arm/boot/Makefile:64: arch/arm/boot/compressed/vmlinux] Error 2
make: *** [arch/arm/Makefile:330: zImage] Error 2
make: *** Waiting for unfinished jobs....

我已将 output/host/usr/bin 添加到我的 PATH 环境变量中,以便 make 可以找到工具链。有什么想法吗?

【问题讨论】:

    标签: linux linux-kernel arm cross-compiling buildroot


    【解决方案1】:

    事实证明,在 arch/arm/boot/compressed 中有一堆旧的 libfdt 相关的头文件仍然存在,所以通过删除这些我能够构建内核。我使用 git status 找到了这些文件。

    【讨论】:

    • 您可以运行git clean -xdf,它会删除所有不受系统控制的东西。此外,强烈建议对生成(构建)的材料使用单独的文件夹。
    • 基本上按照@b20000 和@0andriy,通过强制删除/移除未跟踪的目录、文件。这个命令git clean -xdf 会做同样的事情。它不会删除一堆旧的 libfdt 相关文件,而是删除所有不需要的东西。
    猜你喜欢
    • 1970-01-01
    • 2016-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多