NJU-ProjectN / nemu

NJU EMUlator, a full system x86/mips32/riscv32/riscv64 emulator for teaching
Other
859 stars 184 forks source link

执行make时编译失败,提示未找到头文件isa-def.h #33

Closed cckk4467 closed 2 years ago

cckk4467 commented 2 years ago

图片

您好,在我正常执行了make menuconfig (并未修改任何甚至)并退出后,执行make出现如上错误,请问可能是由什么原因导致的呢 系统是ubuntu 22.04

执行步骤:

sashimi-yzh commented 2 years ago

我在ubuntu 22.04上复现不了你的错误.

你试试进行以下修改

diff --git a/scripts/build.mk b/scripts/build.mk
index 7d1088d..e1bd767 100644
--- a/scripts/build.mk
+++ b/scripts/build.mk
@@ -31,7 +31,7 @@ OBJS = $(SRCS:%.c=$(OBJ_DIR)/%.o) $(CXXSRC:%.cc=$(OBJ_DIR)/%.o)
 $(OBJ_DIR)/%.o: %.c
        @echo + CC $<
        @mkdir -p $(dir $@)
-       @$(CC) $(CFLAGS) -c -o $@ $<
+       $(CC) $(CFLAGS) -c -o $@ $<
        $(call call_fixdep, $(@:.o=.d), $@)

 $(OBJ_DIR)/%.o: %.cc

重新编译的时候应该会输出gcc的命令, 请你把输出的命令贴上来.

cckk4467 commented 2 years ago
➜  nemu git:(ics2021) ✗ make                                                           (ics2021|💩) 14:32
+ CC src/cpu/difftest/dut.c
gcc -O2 -MMD -Wall -Werror -I/home/cckk4467/Lab/nemu/include -I~/Lab/nemu/src/engine/interpreter -I~/Lab/nemu/src/isa/riscv64/include -O2    -DITRACE_COND=true -D__GUEST_ISA__=riscv64 -c -o /home/cckk4467/Lab/nemu/build/obj-riscv64-nemu-interpreter/src/cpu/difftest/dut.o src/cpu/difftest/dut.c
In file included from src/cpu/difftest/dut.c:3:
/home/cckk4467/Lab/nemu/include/isa.h:5:10: fatal error: isa-def.h: 没有那个文件或目录
    5 | #include <isa-def.h>
      |          ^~~~~~~~~~~
compilation terminated.
make: *** [/home/cckk4467/Lab/nemu/scripts/build.mk:34:/home/cckk4467/Lab/nemu/build/obj-riscv64-nemu-interpreter/src/cpu/difftest/dut.o] 错误 1

这是输出日志

问题已经解决了,谢谢!

因为我注意到编译信息里用户目录显示不统一,怀疑是不是使用了~的原因,改成执行export NEMU_HOME=/home/cckk4467/Lab/nemu 后这个问题解决了(虽然之后的编译还是遇到其他的问题了XD)

wangzhankun commented 1 year ago

在不修改menuconfig时可以正常编译,在将ISA修改为x86之后,执行make指令遇到了同样的问题。 我执行find指令:

./src/isa/riscv32/include/isa-def.h
./src/isa/riscv64/include/isa-def.h

发现了两个文件。但是在./src/isa/文件夹下面没有x86的文件夹,在其他文件夹下也没有找到isa-def.h这个文件。

log

find: ‘src/isa/x86’: 没有那个文件或目录
find: ‘src/isa/x86’: 没有那个文件或目录
+ CC src/nemu-main.c
+ CC src/engine/interpreter/init.c
+ CC src/engine/interpreter/hostcall.c
+ CC src/device/io/mmio.c
In file included from src/engine/interpreter/hostcall.c:18:
/home/wang/Documents/github/ics-pa/nemu/include/isa.h:20:10: fatal error: isa-def.h: 没有那个文件或目录
   20 | #include <isa-def.h>
      |          ^~~~~~~~~~~
compilation terminated.
make: *** [/home/wang/Documents/github/ics-pa/nemu/scripts/build.mk:34:/home/wang/Documents/github/ics-pa/nemu/build/obj-x86-nemu-interpreter/src/engine/interpreter/hostcall.o] 错误 1
make: *** 正在等待未完成的任务....