我已遵循此处提到的所有步骤: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