开发者问题收集

riscv64 linux内核编译问题

2020-08-13
1938

我尝试使用以下链接编译 riscv64 的 Linux 内核 -

https://risc-v-getting-started-guide.readthedocs.io/en/latest/linux-qemu.html

使用命令 make ARCH=riscv CROSS_COMPILE=riscv64-unknown-linux-gnu- defconfig 构建 Linux 时,出现以下错误 - scripts/kconfig.include:35 编译器 riscv64-unknown-linux-gnu-gcc 未在 PATH 中找到 scripts/kconfig/Makefile:82:recipe for target 'defconfig' 失败

我已包含工具链路径。仍然不起作用。附上文件夹结构和错误的屏幕截图。 在此处输入图像描述

2个回答

它说 未找到编译器 riscv64-unknown-linux-gnu ,这意味着您的计算机上未安装 riscv gnu 工具链,或者您尝试编译 linux 内核的 shell 实例未找到它。

要检查 RISC-V GNU 工具链是否已安装,请创建一个简单的 C 文件并尝试使用以下命令使用 RISC-V gnu 工具链对其进行编译:

riscv64-unknown-linux-gnu-gcc <filename.c> -o <binaryname>

1. 如果未安装 RISC-V GNU 工具链:
按照 此处 的说明安装 riscv gnu 工具链。请记住使用 make linux 而不是 make 进行编译。

2. 如果安装了 RISC-V GNU Toolchain 或您已完成安装
将其添加到位于主目录中的 .bashrc 文件内的 $PATH 变量中。

然后尝试再次编译您的内核。

Ali Tariq
2022-11-08

我建议在 make 命令中提供工具链的完整前缀,例如:

wget https://toolchains.bootlin.com/downloads/releases/toolchains/riscv64/tarballs/riscv64--glibc--bleeding-edge-2020.02-2.tar.bz2
mkdir -p /opt/bootlin
tar jxf riscv64--glibc--bleeding-edge-2020.02-2.tar.bz2 -C /opt/bootlin

make ARCH=riscv CROSS_COMPILE=/opt/bootlin/riscv64--glibc--bleeding-edge-2020.02-2/bin/riscv64-buildroot-linux-gnu- mrproper defconfig Image 

编译应该可以顺利完成 - 这里使用 linux 5.7.11:

  HOSTCC  scripts/basic/fixdep
  HOSTCC  scripts/kconfig/conf.o
  HOSTCC  scripts/kconfig/confdata.o
  HOSTCC  scripts/kconfig/expr.o
  LEX     scripts/kconfig/lexer.lex.c
  YACC    scripts/kconfig/parser.tab.[ch]
  HOSTCC  scripts/kconfig/lexer.lex.o
  .../...
  LD      vmlinux.o
  MODPOST vmlinux.o
  MODINFO modules.builtin.modinfo
  GEN     modules.builtin
  LD      .tmp_vmlinux.kallsyms1
  KSYM    .tmp_vmlinux.kallsyms1.o
  LD      .tmp_vmlinux.kallsyms2
  KSYM    .tmp_vmlinux.kallsyms2.o
  LD      vmlinux
  SYSMAP  System.map
  OBJCOPY arch/riscv/boot/Image
  Kernel: arch/riscv/boot/Image is ready
Frant
2020-08-15