riscv64 linux内核编译问题
我尝试使用以下链接编译 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' 失败
它说
未找到编译器 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
变量中。
然后尝试再次编译您的内核。
我建议在
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