RISC-V sur Linux

Cette documentation fonctionne pour Debian12. Adaptez en fonction de votre distribution.

Natif RISC-V

  • Rien à faire !

Compilation croisée

  • apt install gcc-riscv64-linux-gnu
  • Donne accès à riscv64-linux-gnu-gcc, riscv64-linux-gnu-as et de nombreux autres outils
  • Exemple: riscv64-linux-gnu-gcc -static hello.c -o hello

Qemu

  • apt install qemu-user
  • Donne accès à qemu-riscv64
  • Exemple: qemu-riscv64 hello

Libs partagées RISC-V

qemu a besoin d’un peu d’aide pour trouver les bibliothèques partagées.

S’il ne les trouve pas, il affiche une erreur du genre Could not open '/lib/ld-linux-riscv64-lp64d.so.1': No such file or directory.

Option 0

  • Compiler avec gcc -static pour pas se battre avec les bibliothèques partagées (dont libc)

Option 1

  • Utiliser l’option -L de qemu
  • Exemple: qemu-riscv64 -L /usr/riscv64-linux-gnu hello

Option 2

  • Fournir un chemin par défaut pour l’architecture RV64, cela dépend malheureusement de votre version de qemu
  • Exécutez qemu-riscv64 -h
  • Regardez la ligne QEMU_LD_PREFIX=.... Par exemple QEMU_LD_PREFIX = /etc/qemu-binfmt/riscv64
  • Appelons ce chemin QEMU_LD_PREFIX
  • Créez un lien symbolique
    • mkdir -p $(dirname "$QEMU_LD_PREFIX")
    • sudo ln -s /usr/riscv64-linux-gnu "$QEMU_LD_PREFIX"

RARS

  • Installer le JAR depuis le dépôt git
  • java -jar rars.jar pour lancer la GUI
    • Important : passez en mode 64bits (dans settings)
  • java -jar rars.jar h pour l’aide en ligne de commande
  • java -jar rars.jar rv64 prog.s lib1.s lib2.s pour assembler et exécuter en ligne de commande