Chaîne d'outils de compilation croisée pour le sous-système Linux sous Windows (arm-linux-gcc)

Chaîne d'outils de compilation croisée pour le sous-système Linux sous Windows (arm-linux-gcc)

1. Téléchargez arm-linux-gcc-4.3.2.tar.bz2, puis décompressez-le dans le répertoire / usr / local /, utilisez la commande:

  sudo tar -jxvf arm-linux-gcc-4.3.2.tar.bz2 -C / 

Installé dans le répertoire / usr / local / arm par défaut

2. Donnez ensuite toutes les autorisations au dossier / usr / local / arm /

sudo chmod 777 /usr/local/arm

Troisièmement, utilisez vim pour ouvrir le fichier / etc / profile

sudo vi /etc/profile 

Ajoutez ce qui suit à la fin

export PATH=/usr/local/arm/4.3.2/bin/:$PATH

Après l'ajout, exécutez

source /etc/profile

Rendre la configuration efficace

5. Puis exécutez arm-linux-gcc -v pour vérifier la version de l'outil croisé, mais il y aura des problèmes comme suit
arm-linux-gnueabihf-gcc: impossible d'exécuter le fichier binaire: erreur de format Exec.
Après avoir trouvé des solutions dans divers forums, certains disent oui ubuntu64-bit system, et arm-linux-gcc est un paquet 32 ​​bits, donc le paquet 32 ​​bits installé sous ubunt est compatible avec arm-linux-gcc,
tel

sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install libc6:i386
sudo apt-get install lib32ncurses5 ​lib32ncurses5-dev
sudo apt-get install lib32z1

Tout ne fonctionne pas bien , il y aura toujours un problème de « impossible d'exécuter le fichier binaire: erreur de format Exec» .
Au moment où j'allais abandonner, j'ai trouvé un article
avec un lien source: https://www.cnblogs.com/JiuHuan/p/10073632.html
pour montrer le respect des droits de propriété intellectuelle.

Solution

Vérifiez la table d'exportation du programme via readelf -a arm-linux-gcc. La
commande readelf signale une erreur: ce n'est pas un fichier ELF - il a les mauvais octets magiques au début
. La source du problème est initialement déterminée. Le sous-système ne prend pas en charge les en-têtes de fichiers Linux natifs.
La solution est la suivante:
ajouter la prise en charge de l'en-tête de fichier au format xxx

sudo apt update
sudo apt install qemu-user-static
sudo update-binfmts --install i386 /usr/bin/qemu-i386-static --magic
'\x7fELF\x01\x01\x01\x03\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x03\x00\x01\x00\x00\x00' --mask '\xff\xff\xff\xff\xff\xff\xff\xfc\xff\xff\xff\xff\xff\xff\xff\xff\xf8\xff\xff\xff\xff\xff\xff\xff'

Exécutez à nouveau arm-linux-gcc -v, et finalement c'est normal

Insérez la description de l'image ici

Je suppose que tu aimes

Origine blog.csdn.net/qq_41782149/article/details/104342138
conseillé
Classement