常见问题 » 历史记录 » 版本 1
姚杰, 2021-09-05 20:59
1 | 1 | 姚杰 | h3. 常见问题 |
---|---|---|---|
2 | |||
3 | # make setup 相关 |
||
4 | ** curl未安装: apt-get install curl |
||
5 | ** nemu/Makefile.git中的学号与姓名修改(此步骤必须在master分支做) |
||
6 | # 环境变量NEMU_HOME,AM_HOME,NAVY_HOME未设置 |
||
7 | ** 手工设置,在~/.bashrc底部添加以下内容(对应绝对路径) |
||
8 | <pre> |
||
9 | export NEMU_HOME=/path/to/ics2019/nemu |
||
10 | export AM_HOME=/path/to/ics2019/nexus-am |
||
11 | export NAVY_HOME=/path/to/ics2019/navy-apps |
||
12 | </pre> |
||
13 | 然后执行 source ~/.bashrc |
||
14 | ** 自动设置: |
||
15 | <pre> |
||
16 | make setup |
||
17 | </pre> |
||
18 | # make run 时报错 make: *** No rule to make target '$(ARCHIVE)'. Stop. 使用以下补丁(navy-apps/Makefile.lib, navy-apps/Makefile.app 类似改法): |
||
19 | <pre> |
||
20 | diff --git a/nexus-am/Makefile.lib b/nexus-am/Makefile.lib |
||
21 | index de716f8..5b73984 100644 |
||
22 | --- a/nexus-am/Makefile.lib |
||
23 | +++ b/nexus-am/Makefile.lib |
||
24 | @@ -6,7 +6,7 @@ INC_DIR += $(LIB_DIR)/include/ |
||
25 | DST_DIR ?= $(LIB_DIR)/build/$(ARCH)/ |
||
26 | ARCHIVE ?= $(LIB_DIR)/build/$(NAME)-$(ARCH).a |
||
27 | |||
28 | -.DEFAULT_GOAL = $(ARCHIVE) |
||
29 | +.DEFAULT_GOAL = archive |
||
30 | |||
31 | INC_DIR += $(addsuffix /include/, $(addprefix $(AM_HOME)/libs/, $(LIBS))) |
||
32 | |||
33 | @@ -16,6 +16,8 @@ $(shell mkdir -p $(DST_DIR)) |
||
34 | |||
35 | include $(AM_HOME)/Makefile.compile |
||
36 | |||
37 | +archive: $(ARCHIVE) |
||
38 | + |
||
39 | $(ARCHIVE): $(OBJS) |
||
40 | @echo + AR $@ |
||
41 | @ar rcs $(ARCHIVE) $(OBJS) |
||
42 | </pre> |
||
43 | # 课程所提供的代码库是数年累积下来的,无法做到全部适配最新的编译/运行环境。同学们自己电脑的环境使用的GCC工具链有时有较大的差异性,会造成代码编译会报错。 |
||
44 | ** C99语法问题:添加 --std=c99 选项到Makefile,如不能解决则直接修改源代码 |
||
45 | ** 警告导致错误问题:由于报错行数行较多,暂时去掉-Werror选项 |
||
46 | ** 编译报错:fatal error: bits/libc-header-start.h: No such file or directory. 安装32位编译环境:sudo apt-get install gcc-multilib |
||
47 | ** X86 反汇编多出endbr32, notrack jmpq, movsb等指令的问题:修改nemu/Makefile, nexus-am/Makefile.compile, navy-apps/Makefile.compile 文件中的CFLAGS、CXXFLAGS中的O2改成O0, 并加上 -mmanual-endbr -fcf-protection=none |
||
48 | # 使用Docker时,需要图形界面的程序运行不起来,报错: |
||
49 | libGL error: No matching fbConfigs or visuals found |
||
50 | libGL error: failed to load driver: swrast |
||
51 | 因为较新的Linux环境libGL优先加载dri驱动,在Docker环境需要纯软件渲染。解决方案(将dri目录重命名,使libGL退回到软件渲染): |
||
52 | cd /usr/lib/x86_64-linux-gnu/ |
||
53 | mv dri dri_org |