安装xv6时编译sh.c报错怎么班?

在Ubuntu上安装xv6时出现编译错误
make qemu
运行结果及报错内容

img

我的解答思路和尝试过的方法

对比了同学运行成功的代码,发现sh.c一点问题也没有

我想要达到的结果

想赶紧把xv6装好

in function 'runcmd'
error: infinite recursion detected[-werror= infinite -recursion ]
中文翻译:
在函数“runcmd”中
错误:检测到无限递归[-werror=无限递归]
问题分析:
这个错是递归调用导致的
思路:
第一种解决方案是通过修改Makefile:

CFLAGS = -Wall -Werror -O -fno-omit-frame-pointer -ggdb -Wno-error=infinite-recursion

第二种解决方案是在xv6-labs-2021/user/sh.c文件中, runcmd函数上面添加设置特殊属性的宏:

__attribute__((noreturn))
 void
 runcmd(struct cmd *cmd)
 {

sh.c中runcmd函数出错,是不是使用递归,然后没有加临界条件(边界终止条件)?没加的话,可能会造成无限递归,也就可能是出现了这类情况、