运行环境
Ubuntu 24.04 LTS (x86_64), riscv64-linux-gnu-gcc, minirv-npc, Repository Commit (archbench) @ 52034e3, NJU-ProjectN/abstract-machine @ 9bc0a93
这是我运行和修改的记录
note.txt
这是YSYX讲义对应的位置(我的minirv-npc已通过基础测试)
E6 简易运行时环境
问题
1. 多个用例缺少 main 入口符号
000.hello, 102.queen, 103.dinic, 104.malloc, 106.qsort, 107.stream, 203.rsa 链接失败:
riscv64-linux-gnu-ld: am-minirv-npc.a(trm.o): in function `_trm_init':
trm.c:(.text._trm_init+0x10): undefined reference to `main'
这些用例未自带 main.c,需依赖 libbench/bench.c 中的 main()。但子项目 Makefile 未声明依赖 libbench,且 AM 默认去 $(AM_HOME)/libbench 检索依赖库,导致符号未参与链接。
我在hello.c对应的Makefile中添加了依赖声明,解决了hello找不到main的问题。
2. 系统 glibc 头文件与 AM klib.h 原型冲突
100.blockchain, 201.jpeg, 200.genann, 302.lua, 303.cproc 等编译失败:
/usr/riscv64-linux-gnu/include/string.h:152:14: note: previous declaration of ‘strncat’
/abstract-machine/klib/include/klib.h:21:8: error: conflicting types for ‘strncat’
3. 裸机 AM 环境下缺失 libc 扩展函数
101.igemm, 105.bf, 108.ntt 报 implicit declaration of function ‘calloc’
202.llama2, 300.bzip3 报 implicit declaration of function ‘isprint’ / ‘isspace’ / ‘isdigit’
运行环境
Ubuntu 24.04 LTS (x86_64), riscv64-linux-gnu-gcc, minirv-npc, Repository Commit (archbench) @ 52034e3, NJU-ProjectN/abstract-machine @ 9bc0a93
这是我运行和修改的记录
note.txt
这是YSYX讲义对应的位置(我的minirv-npc已通过基础测试)
E6 简易运行时环境
问题
1. 多个用例缺少
main入口符号000.hello,102.queen,103.dinic,104.malloc,106.qsort,107.stream,203.rsa链接失败:这些用例未自带
main.c,需依赖libbench/bench.c中的main()。但子项目 Makefile 未声明依赖libbench,且 AM 默认去$(AM_HOME)/libbench检索依赖库,导致符号未参与链接。我在hello.c对应的Makefile中添加了依赖声明,解决了hello找不到main的问题。
2. 系统 glibc 头文件与 AM
klib.h原型冲突100.blockchain,201.jpeg,200.genann,302.lua,303.cproc等编译失败:3. 裸机 AM 环境下缺失 libc 扩展函数
101.igemm,105.bf,108.ntt报implicit declaration of function ‘calloc’202.llama2,300.bzip3报implicit declaration of function ‘isprint’ / ‘isspace’ / ‘isdigit’