Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
utilisateurs:amj:brouillons:qemu-user [Le 18/01/2014, 17:28] – amj | utilisateurs:amj:brouillons:qemu-user [Le 21/10/2014, 02:36] (Version actuelle) – relecture amj | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | ====== qemu user emulation ====== | ||
+ | |||
+ | qemu-user est un émulateur d’architecture, | ||
+ | |||
+ | ===== Utilisation ===== | ||
+ | |||
+ | compilons un helloworld pour une architecture différente de celle de l' | ||
+ | [[: | ||
+ | <file c helloworld.c># | ||
+ | int main () | ||
+ | { | ||
+ | printf (" | ||
+ | } </ | ||
+ | |||
+ | < | ||
+ | <note tip> | ||
+ | < | ||
+ | bash: ./a.out : fichier binaire impossible à lancer </ | ||
+ | |||
+ | L' | ||
+ | |||
+ | [[: | ||
+ | |||
+ | < | ||
+ | / | ||
+ | (ici il s'agit du cas d'une compilation pour arm) | ||
+ | |||
+ | Cette librairie n'est pas installée (en tout cas pas si vous avez utilisé un compilateur externe à celui fourni dans les dépôts d' | ||
+ | Trois solution s' | ||
+ | - Installer les librairies arm sur votre ordinateur. (ce qui ne sera pas expliqué ici) | ||
+ | - Compiler le programme en static c'est à dire insérer les librairies dans l' | ||
+ | - Utiliser un linux (un système non lancé au démarrage mais présent sur une partition) de la même architecture que celle de l' | ||
+ | |||
+ | ==== Faire une compilation static ==== | ||
+ | |||
+ | |||
+ | Il suffit de rajouter l' | ||
+ | |||
+ | < | ||
+ | ./a.out | ||
+ | Hello World! </ | ||
+ | |||
+ | ==== Utilisation de qemu-user avec chroot ==== | ||
+ | |||
+ | |||
+ | C'est la manière la plus intéressante d' | ||
+ | (nous commençons directement avec un système d'une architecture différente de celle de l' | ||
+ | < | ||
+ | surprise !!! :-) | ||
+ | < | ||
+ | |||
+ | cela s' | ||
+ | il suffit donc de le copier | ||
+ | < | ||
+ | sudo chroot /< | ||
+ | (Si toute fois le problème perdure c'est peut-être parce que bash n'est pas installé sur certains systèmes embarqués. Utilisez alors sudo chroot /< | ||
+ | |||
+ | Vous avez alors un terminal avec bash presque comme si vous étiez sur le système (pour utiliser un chroot il est conseillé de monter les périphériques spéciaux comme /proc /dev et les autres) | ||
+ | pour sortir du chroot tapez exit | ||
+ | |||
+ | Lancer un programme " | ||
+ | < | ||
+ | cp helloworld /< | ||
+ | sudo chroot /< | ||
+ | Hello World!</ | ||
+ | |||
+ | (n' | ||
+ | |||
+ | |||
+ | ==== Avec Proot à la place de chroot ! ==== | ||
+ | Cela permet d' | ||
+ | |||
+ | Tout d' | ||
+ | |||
+ | (pas de sudo) | ||
+ | < | ||
+ | |||
+ | ===== Source ===== | ||
+ | [[https:// | ||
+ | |||
+ | Contributeurs: |