我正在尝试运行 xv6-riscv。我使用的是 Ubuntu 22.04.2 LTS,所以我需要构建 gnu-riscv-toolchain。以下这些按照说明,我运行了sudo make
。最终,make 产生了以下输出:
rm -rf stamps/build-newlib build-newlib
mkdir build-newlib
cd build-newlib && /mnt/c/Users/vrait/Documents/Code/OperatingSystems/riscv-gnu-toolchain/newlib/configure \
--target=riscv64-unknown-elf \
\
--prefix=/usr/local \
--enable-newlib-io-long-double \
--enable-newlib-io-long-long \
--enable-newlib-io-c99-formats \
--enable-newlib-register-fini \
CFLAGS_FOR_TARGET="-O2 -D_POSIX_MODE -ffunction-sections -fdata-sections -mcmodel=medlow" \
CXXFLAGS_FOR_TARGET="-O2 -D_POSIX_MODE -ffunction-sections -fdata-sections -mcmodel=medlow"
/bin/sh: 1: /mnt/c/Users/vrait/Documents/Code/OperatingSystems/riscv-gnu-toolchain/newlib/configure: not found
make: *** [Makefile:622: stamps/build-newlib] Error 127
第 622 行是产生错误的 Makefile 行:
rm -rf $@ $(notdir $@)
mkdir $(notdir $@)
cd $(notdir $@) && $</configure \
# some args
我对 CMake 没什么经验,但我的理解是,此代码会删除notdir
,创建一个新notdir
目录,移至该目录,然后尝试/configure
使用一些参数运行。我不明白这是如何工作的:您正尝试访问刚创建的空目录中的文件。那里怎么可能有文件供您访问?
更改/configure
为/../configure
允许我绕过这个错误(在 gnu-riscv-toolchain 的根目录中有一个配置文件,我认为这会导致程序访问它),但是 Make 在输出以下内容后突然停转(没有错误消息,它只是停止产生输出):
cd build-binutils-newlib && CC_FOR_TARGET=riscv64-unknown-elf-gcc /mnt/c/Users/vrait/Documents/Code/OperatingSystems/riscv-gnu-toolchain/newlib/../binutils/configure \
# some args
我认为这是因 更改为 而导致/configure
的/../configure
。
rm
, mkdir
, cd
,序列如何才能/configure
正常工作而不总是尝试访问不存在的文件?此外,修复not found
错误的正确方法是什么?