Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
utilisateurs:amj:brouillons:qemu-user [Le 18/01/2014, 17:25] – créée amjutilisateurs:amj:brouillons:qemu-user [Le 11/09/2022, 13:14] (Version actuelle) – Suppression des espaces en fin de ligne (détecté et corrigé via le bot wiki-corrector (https://forum.ubuntu-fr.org/viewtopic.php?id=2067892) moths-art
Ligne 7: Ligne 7:
  
 compilons un helloworld pour une architecture différente de celle de l'hôte, <arch> . (vous devez avoir installé un compilateur croisé pour cette architecture préalablement [[:tutoriel:compilation_croisee]] ou utilisez crosstool-ng ) compilons un helloworld pour une architecture différente de celle de l'hôte, <arch> . (vous devez avoir installé un compilateur croisé pour cette architecture préalablement [[:tutoriel:compilation_croisee]] ou utilisez crosstool-ng )
-[[:tutoriel:comment_modifier_un_fichier|Créez le fichier]]  helloworld.c  +[[:tutoriel:comment_modifier_un_fichier|Créez le fichier]]   
-<code>#include <stdio.h>+<file c helloworld.c>#include <stdio.h>
 int main () int main ()
 { {
   printf ("Hello World!\n");   printf ("Hello World!\n");
-} </code>+} </file>
  
 <code> <arch>-gcc helloworld.c </code> <code> <arch>-gcc helloworld.c </code>
-<note tip>attention le nom de gcc n'est pas toujours identique faites <code>ls /usr/bin/*gcc</code>  pour le retrouver</note> +<note tip>attention le nom de gcc n'est pas toujours identique faites <code>ls /usr/bin/*gcc</code>  pour le retrouver facilement</note> 
 <code>./a.out <code>./a.out
 bash: ./a.out : fichier binaire impossible à lancer </code> bash: ./a.out : fichier binaire impossible à lancer </code>
  
-L'exécutable a.out étant pour une architecture différente de l'hôte il ne peut pas être éxécuté+L'exécutable a.out étant pour une architecture différente de l'hôte il ne peut pas être exécuté
  
 [[:tutoriel:comment_installer_un_paquet|installez les paquets]] **[[apt>qemu-user-static]]** et **[[apt>binfmt-support]]** [[:tutoriel:comment_installer_un_paquet|installez les paquets]] **[[apt>qemu-user-static]]** et **[[apt>binfmt-support]]**
Ligne 29: Ligne 29:
 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'ubuntu) car nous ne nous trouvons pas sur un système de type 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'ubuntu) car nous ne nous trouvons pas sur un système de type arm.
 Trois solution s'offrent à vous Trois solution s'offrent à vous
-  - Liste numérotée installer les librairies arm sur votre ordinateur. (ce que nous n'expliquerons pas ici) +  -  Installer les librairies arm sur votre ordinateur. (ce qui ne sera pas expliqué ici) 
-  - Liste numérotée compiler le programme en static c'est à dire insérer les librairies dans l'exécutable et ainsi ne plus avoir de dépendances à ces librairies. +  -  Compiler le programme en static c'est à dire insérer les librairies dans l'exécutable et ainsi ne plus avoir de dépendances à ces librairies. 
-  - Liste numérotée 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'exécutable et grâce à la commande chroot le "lancer" sous votre système hôte malgré la différence entre l'architecture hôte et celle de ce système.+  -  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'exécutable et grâce à la commande chroot le "lancer" sous votre système hôte malgré la différence entre l'architecture hôte et celle de ce système.
  
 ==== Faire une compilation static ==== ==== Faire une compilation static ====
Ligne 60: Ligne 60:
 pour sortir du chroot tapez exit pour sortir du chroot tapez exit
  
-Lancer un programme "étranger" depuis un chroot +Lancer un programme "étranger" depuis un chroot
 <code><arch>-gcc helloworld.c -o helloworld  <code><arch>-gcc helloworld.c -o helloworld 
 cp helloworld /<emplacement du chroot>/usr/bin/helloworld cp helloworld /<emplacement du chroot>/usr/bin/helloworld
Ligne 67: Ligne 67:
  
 (n'oubliez pas que les dépendances aux librairies doivent se trouver dans le système "chrooté") (n'oubliez pas que les dépendances aux librairies doivent se trouver dans le système "chrooté")
 +
 +
 +==== Avec Proot à la place de chroot ! ====
 +Cela permet d'éviter d'utiliser les droits root et d'installer qemu-user-static et ainsi n'installer que qemu-user (plus petit).
 +
 +Tout d'abord [[:tutoriel:comment_installer_un_paquet|installez le paquet]] **[[apt>proot]]** (qui se prononce p-root pas proute :-) )
 +
 +(pas de sudo)
 +<code>proot -q /usr/bin/qemu-<arch> -r /<racines des librairies etc...>/ /usr/bin/helloworld</code>
 +
 +===== Source =====
 +[[https://wiki.debian.org/QemuUserEmulation]]
 +
 +Contributeurs: [[:utilisateurs:amj|amj]]