Différences

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

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine 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 11/09/2022, 13:14] (Version actuelle)
moths-art 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)
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]] Contributeurs:​ [[:​utilisateurs:​amj|amj]]
  • utilisateurs/amj/brouillons/qemu-user.1390062484.txt.gz
  • Dernière modification: Le 18/01/2014, 17:28
  • par amj