编译 Xv6 Kernal 时出错“错误:找不到 riscv64 版本的 GCC/binutils。”

问题描述 投票:0回答:0

我已遵循此处提到的所有步骤:https://pdos.csail.mit.edu/6.828/2022/tools.html 但是当我尝试“make qemu”时,出现以下错误。

% make qemu
***
*** Error: Couldn't find a riscv64 version of GCC/binutils.
*** To turn off this error, run 'gmake TOOLPREFIX= ...'.
***
gcc    -c -o kernel/entry.o kernel/entry.S
kernel/entry.S:5:15: error: unexpected token in '.section' directive
.section .text
              ^
kernel/entry.S:12:9: error: invalid instruction mnemonic 'la'
        la sp, stack0
        ^~
kernel/entry.S:13:9: error: invalid instruction mnemonic 'li'
        li a0, 1024*4
        ^~
kernel/entry.S:14:9: error: invalid instruction mnemonic 'csrr'
        csrr a1, mhartid
        ^~~~
kernel/entry.S:15:9: error: invalid instruction mnemonic 'addi'
        addi a1, a1, 1
        ^~~~
kernel/entry.S:16:9: error: unknown use of instruction mnemonic without a size suffix
        mul a0, a0, a1
        ^
kernel/entry.S:17:9: error: unknown use of instruction mnemonic without a size suffix
        add sp, sp, a0
        ^
kernel/entry.S:21:9: error: ambiguous instructions require an explicit suffix (could be 'jb', or 'jl')
        j spin
        ^
make: *** [kernel/entry.o] Error 1
% 

我认为在 ~/.bashrc 文件中包含

PATH=$PATH:/usr/local/opt/riscv-gnu-toolchain/bin
可能会出现一些环境路径错误。我的默认 shell 是 zsh 及其 ~/.zshrc 文件。 我在 ~/.zshrc 文件中添加了这一行:

# for xv6kernel
PATH=$PATH:/usr/local/opt/riscv-gnu-toolchain/bin

添加后,我的新终端的 PATH 变量有此输出。所以,我不认为它的路径问题。

% echo $PATH
... // Removed these paths for privacy
:/usr/local/opt/riscv-gnu-toolchain/bin
%

这个answer(下面的命令)对我不起作用。

brew install qemu x86_64-elf-gcc

export TOOLPREFIX=x86_64-elf- 
export QEMU=qemu-system-i386

make qemu
environment-variables homebrew qemu macos-monterey xv6
© www.soinside.com 2019 - 2024. All rights reserved.