@薛定谔不养猫 2025-01-15 16:46 采纳率: 0%
浏览 6

xv6系统系统添加调用代码报错

在lab9第二个小实验中,需要添加新的系统调用,在修改相关文件之后,运行make qemu显示错误:make: *** No rule to make target 'user/_symlink', needed by 'fs.img'. Stop. 不知道是哪方面的问题,我在网上搜后,有相关错误是因为makefile文件格式错误,但是我没有这方面的原因(只是改了一处,并且完全复制的,应该不是这个原因,当然也不排除完全不是),然后我用gpt查了后也是说是makefile问题,让我添加新的代码,试了后也不对。
另外,在几乎所用添加系统调用的实验中我都会遇到这种问题,上次遇到后将代码回退重复实验,在第二天自动好了,不知道怎么回事,这次又遇到了但是回退重新敲了好几次仍然不行。相关代码截图如下。

img

img

img

img

img

img

  • 写回答

2条回答 默认 最新

  • 道友老李 JWE233286一种基于机器视觉的水表指针读数识别及修正的方法 专利发明者 2025-01-15 16:47
    关注
    让【道友老李】来帮你解答,本回答参考gpt编写,并整理提供,如果还有疑问可以点击头像关注私信或评论(小黑屋了,无法评论,请私信)。
    如果答案让您满意,请采纳、关注,非常感谢!
    根据您提供的信息和代码截图,问题可能出在Makefile文件中。特别是在第一张截图中,您添加了一个新的系统调用,需要在Makefile中进行相应的修改。在第二张截图中,您可以看到在Makefile的fs/fs.mk文件中添加了相关的修改,但是错误提示显示找不到'user/_symlink',说明在添加新系统调用时有可能忘记添加对应的编译规则。 在第一张截图中,您可以看到在Makefile(ucore.mk)文件中,添加了user/_symlink.c这一文件作为新的系统调用文件,但是未在Makefile中增加编译规则。您可以按照类似的格式,在Makefile中添加相应的规则,使编译系统能够正确识别和编译这个新的系统调用文件。 示例代码片段如下所示:
    # user/_symlink
    $(call create-target,user/_symlink)
    

    另外,第四张截图中出现的错误也可能是由于对Makefile的修改不正确导致的。您可以参考已有的系统调用的编译规则,确保新系统调用的编译规则正确添加,以避免这类错误发生。 最后,如果您之前遇到过类似问题回退后问题解决,可能是因为回退到了有效的配置环境或规则中。请确保在添加新系统调用时,及时检查并修改Makefile文件,以避免出现类似错误。 希望以上解答对您有帮助。如果问题依然存在,可以提供更多相关代码和信息,以便进一步分析和解决。

    评论

报告相同问题?

问题事件

  • 创建了问题 1月15日