如果要开发riscv相关软件,但是没有riscv的硬件,或者不想用交叉编译环境,编译ffmpeg之类软件的时候有很多依赖,所有的依赖都要交叉编译,此时一个可以运行riscv64的docker就是你的救命法宝。
参考
Docker在x86架构的物理机上跑Qemu-arm 容器_sunSHINEEzy的博客-CSDN博客_docker运行qemu
一、安装对应的软件
apt install --no-install-recommends qemu-user-static binfmt-support
update-binfmts --enable qemu-riscv64
update-binfmts --display qemu-riscv64
sudo chmod a+x /usr/bin/qemu-*
二、下载运行riscv的docker镜像
docker pull riscv64/ubuntu:21.04
docker run -it -v /usr/bin/qemu-riscv64-static:/usr/bin/qemu-riscv64-static riscv64/ubuntu:21.04 /bin/bash
三、具体原理
设置内核对二进制文件所用的解释器,从而在运行bin时,直接调用qemu-user-static进行解释运行,速度会有降低,但是毕竟不需要真实的riscv64硬件,而且可以如果服务器性能好,核多,多进程运行程序的效率比riscv64的板子性能要好很多。
qemu-user-static/developers_guide.md at master · multiarch/qemu-user-static · GitHub
实测比用qemu运行一个riscv的虚拟机性能好太多了,因为riscv的虚拟机只支持最多4个CPU。docker可以使用服务器的所有CPU。
更多参考: