昨天完成了lab4,今天开启了lab5。
Lab 5: File system, Spawn, and Shella
按照getting stared的流程走,当执行完git merge lab4后,想执行一下make指令看看是否这段ok,结果报错,如下所示:
lib/spawn.c:110:42: error: taking address of packed member of ‘struct Trapframe’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
110 | if ((r = init_stack(child, argv, &child_tf.tf_esp)) < 0)
| ^~~~~~~~~~~~~~~~
cc1: all warnings being treated as errors
make: *** [lib/Makefrag:37: obj/lib/spawn.o] Error 1
我们可以注意到这行:
cc1: all warnings being treated as errors
报错原因就如该行英文的字面意思,因此想到去修改GNUmakefile中的Werror
打开lab5/下的GNUmakefile
#
# This makefile system follows the structuring conventions
# recommended by Peter Miller in his excellent paper:
#
# Recursive Make Considered Harmful
# http://aegis.sourceforge.net/auug97.pdf
#
OBJDIR := obj
# Run 'make V=1' to turn on verbose commands, or 'make V=0' to turn them off.
ifeq ($(V),1)
override V =
endif
ifeq ($(V),0)
override V = @
endif
-include conf/lab.mk
-include conf/env.mk
LABSETUP ?= ./
TOP = .
命令模式下输入
/Werror<

在完成lab4并开始lab5时遇到编译错误,原因是-Werror选项将警告视为错误。通过修改GNUmakefile,移除-Werror解决了这个问题。然而,随后又出现了多重定义错误,主要是关于super和bitmap变量。通过在fs/fs.c和fs/fs.h中添加extern关键字,成功解决了这个错误,使编译得以继续。
最低0.47元/天 解锁文章
6024

被折叠的 条评论
为什么被折叠?



