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