项目

一般

简介

常见问题 » 历史记录 » 版本 4

姚杰, 2021-11-27 11:00

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