昨天实习生妹妹问了一个我无法解决的问题。
用riscv-gnu-toolchain编译出来的gcc和gdb,可以编译出可执行文件,但无法通过qemu运行。 使用riscv-unknown-gnu-linux-gdb run该可执行文件会报错don't know how to run
使用$RISCV/bin/qemu-riscv64 -D -L $RISCV/sysroot {executable file} 报错 Error while loading /path/sysroot: Exec format error
使用 file {executable file} 显示

ELF 64-bit LSB executable, UCB RISC-V, RVC, double-float ABI, version 1 (SYSV), dynamically linked,
interpreter /lib/ld-linux-riscv64-lp64d.so.1, for GNU/Linux 4.15.0, not stripped

编译时加上-static参数只会改变file时链接方式的描述。
暂时无法解决,有待咨询其他人。

看到实习生妹妹微信群里问队友,队友虽然没解释为啥,但是教她使用gdbserver
我之前想的是用qemu起一个riscv64的linux来用,现在学习到了简单方法,taget sim
观察到队友廖仕华使用截图里面target sim, load, run 之后有非法指令。
我使用ArchLinux先根据热心群友qty的指导使用paru -S python3-12 解决了当前系统python版本为 3.13,riscv-unkown-elf-gdb 报错缺少 libpython-3.12.so.1 的问题。接着复现了非法指令的问题。
但是队友和实习生无法使用layout asm 查看哪里有非法指令,我却可以。据说需要在configure时enable-tui,网上也有说法是ubuntu需要下载库。
使用layout asm可以观察到非常长的,与直接生成的汇编程序不同的汇编程序,里面确实有unimp
现在成为了未解之谜。