Go Down

Topic: Erreur de compilation (exec format error) (Read 543 times) previous topic - next topic

Waryard

Oct 21, 2019, 03:23 pm Last Edit: Oct 21, 2019, 03:24 pm by Waryard
Bonjour à tous!

Nouvelle installation d'Arduino, j'obtiens ce message lors de la compilation :

Code: [Select]
fork/exec /home/kubuntu/.arduino15/packages/arduino/tools/avr-gcc/7.3.0-atmel3.6.1-arduino5/bin/avr-g++: exec format error
Erreur de compilation pour la carte Arduino Nano


Je suis sous Kubuntu 19.04 64bits, Arduino se trouve dans mon répertoire personnel

Quelqu'un a-t-il déjà rencontré ce problème ?

Merci!

dbrion06

Que donne , depuis une console:

Code: [Select]

# existe-t-il? pouvez vous l'executer?
ls -l  /home/kubuntu/.arduino15/packages/arduino/tools/avr-gcc/7.3.0-atmel3.6.1-arduino5/bin/avr-g++

# dit pour quel processeur il a été compilé (signale si c'est un texte, un fichier video; si c'est un executable, dit sur quelle machine.... )

file  /home/kubuntu/.arduino15/packages/arduino/tools/avr-gcc/7.3.0-atmel3.6.1-arduino5/bin/avr-g++

#peut il executer (au moins jusqu'au chargement de librairies) une commande simple
 /home/kubuntu/.arduino15/packages/arduino/tools/avr-gcc/7.3.0-atmel3.6.1-arduino5/bin/avr-g++ --version

Waryard

Quote
# existe-t-il? pouvez vous l'executer?
ls -l  /home/kubuntu/.arduino15/packages/arduino/tools/avr-gcc/7.3.0-atmel3.6.1-arduino5/bin/avr-g++
Code: [Select]
-rwxr-xr-x 2 kubuntu kubuntu 972460 mars   8  2019 /home/kubuntu/.arduino15/packages/arduino/tools/avr-gcc/7.3.0-atmel3.6.1-arduino5/bin/avr-g++

Quote
# dit pour quel processeur il a été compilé (signale si c'est un texte, un fichier video; si c'est un executable, dit sur quelle machine.... )
file  /home/kubuntu/.arduino15/packages/arduino/tools/avr-gcc/7.3.0-atmel3.6.1-arduino5/bin/avr-g++
Code: [Select]
/home/kubuntu/.arduino15/packages/arduino/tools/avr-gcc/7.3.0-atmel3.6.1-arduino5/bin/avr-g++: Mach-O 64-bit x86_64 executable, flags:<NOUNDEFS|DYLDLINK|TWOLEVEL|WEAK_DEFINES|BINDS_TO_WEAK>

Quote
#peut il executer (au moins jusqu'au chargement de librairies) une commande simple
 /home/kubuntu/.arduino15/packages/arduino/tools/avr-gcc/7.3.0-atmel3.6.1-arduino5/bin/avr-g++ --version
Code: [Select]
bash: /home/kubuntu/.arduino15/packages/arduino/tools/avr-gcc/7.3.0-atmel3.6.1-arduino5/bin/avr-g++ : impossible d'exécuter le fichier binaire : Erreur de format pour exec()

dbrion06

Etes vous sûr que ça a été compilé pour le bon processeur/système?
https://en.wikipedia.org/wiki/Mach-O

Quote
Mach-O is used by most systems based on the Mach kernel. NeXTSTEP, macOS, and iOS are examples of systems that use this format for native executables, libraries and object code.
est ambigue: pour plus de sûreté, et connaître votre architecture (Ubu linux a-t-il un noyau Mach-O?) , je tenterais:
Code: [Select]

file `which ls`


Si c'est une autre architecture, peut être avez vous fait une horreur lors du téléchargement

Waryard

Etes vous sûr que ça a été compilé pour le bon processeur/système?
https://en.wikipedia.org/wiki/Mach-O

est ambigue: pour plus de sûreté, et connaître votre architecture (Ubu linux a-t-il un noyau Mach-O?) , je tenterais:
Code: [Select]

file `which ls`


Si c'est une autre architecture, peut être avez vous fait une horreur lors du téléchargement
J'ai téléchargé la version "Linux 64bits" et exécuté le script install.sh, tout simplement

La commande file `which ls` retourne
Code: [Select]
/usr/bin/ls: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, BuildID[sha1]=xxxxxxxxx, stripped

J'ai un Ryzen 7 2700, je devrais être (et suis) en x86 64bits
Code: [Select]
$ uname -a
Linux Kubuntu 5.0.0-32-generic #34-Ubuntu SMP Wed Oct 2 02:06:48 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

dbrion06

https://stackoverflow.com/questions/41505163/what-are-the-alternatives-for-running-a-mach-o-64-bit-binary-file-on-a-linux-mac
Quote
There is currently no working Mach-O loader for Linux.
(certes, se réfère à deux ans avant au moins: peut être qu'UBU linux a fait des progrès dans le mariage entre systèmes)

ELF https://fr.wikipedia.org/wiki/Executable_and_Linkable_Format est beaucoup plus standard pour GNUlinux: me voilà rassuré pour .... ls

d'où sort votre tar.gz ?

Waryard

Quote
d'où sort votre tar.gz ?
https://www.arduino.cc/en/Main/Software
Section "Download the Arduino IDE", "Linux 64bits"

Quote
There is currently no working Mach-O loader for Linux.
N'y a-t-il pas moyen de changer de compilateur ?
Si maintenant je dois faire tourner une VM Windaube spécialement pour compiler mes codes je vais devenir fou  :o

dbrion06

Bon, j'ai telechargé le tar.xz, et j'ai demandé ce qu'il avait
je trouve
Code: [Select]

sh-4.1$ file arduino-1.8.10/hardware/tools/avr/bin/avr-gcc
arduino-1.8.10/hardware/tools/avr/bin/avr-gcc: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.26, BuildID[sha1]=0x42110c7ea43ff97aa1139e5228eda97e49dece4c, stripped
sh-4.1$ file arduino-1.8.10/hardware/tools/avr/bin/avr-g++
arduino-1.8.10/hardware/tools/avr/bin/avr-g++: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.26, BuildID[sha1]=0x0bf76ca9acb12a453f926ab7ee04ba4a26a9e2ad, stripped


Je suis rassuré, les binaires pour GNUlinux sont bien des ELF....
(normalement, le script d'installation change des permissions par ci par là, et met à la bonne place; il ne va pas modifier des formats sophistiqués).

Donc, si vous avez des MACH-O, je ne peux que vous conseiller de télécharger les bons binaires, pour linux 64 bits (dans votre cas), sans vous tromper de case....

MicroQuettas

Bonjour,

Il y a déjà quelques temps, j'ai installé l'IDE sur Ubuntu. C'était tellement simple et performant que j'ai publié la recette de cuisine ici installation IDE sur Ubuntu les doigts dans le nez.

Si cela peut vous aider,

Bonne bidouille,

MicroQuettas

dbrion06

#9
Oct 21, 2019, 06:16 pm Last Edit: Oct 21, 2019, 06:25 pm by dbrion06
Bon, pour essayer de reproduire votre panne, j'ai téléchargé Arduino pour Mac:
La même manip que ci dessus a donné
Code: [Select]
sh-4.1$ file Arduino.app/Contents/Java/hardware/tools/avr/bin/avr-gcc
Arduino.app/Contents/Java/hardware/tools/avr/bin/avr-gcc: Mach-O 64-bit executable
sh-4.1$ file Arduino.app/Contents/Java/hardware/tools/avr/bin/avr-g++
Arduino.app/Contents/Java/hardware/tools/avr/bin/avr-g++: Mach-O 64-bit executable

Ce qui indiquerait que MacOS suit les prescriptions de wikipedia, ce qui est admirable.

A ce stade, sans mouvements de doigts, il vous reste trois possibilités:

a) emuler un MAC

b) acheter un MAC

c) télécharger une version pour GNUlinux.... Elle devrait s'appeler arduino-1.8.10-linux64.tar.xz

Un dernier point peut être intriguant: le script d'installation a pu s'éxécuter (mais normalement, le langage de commande dans lequel est écrit le script est reconnu aussi bien par MacOS que par GNUlinux....)

Waryard

#10
Oct 21, 2019, 06:49 pm Last Edit: Oct 21, 2019, 06:50 pm by Waryard
Bonjour,

Il y a déjà quelques temps, j'ai installé l'IDE sur Ubuntu. C'était tellement simple et performant que j'ai publié la recette de cuisine ici installation IDE sur Ubuntu les doigts dans le nez.

Si cela peut vous aider,

Bonne bidouille,

MicroQuettas
J'ai complètement viré arduino puis réinstallé via votre méthode. L'IDE s'ouvre parfaitement mais je me retrouve toujours avec la même erreur
Code: [Select]
fork/exec /home/kubuntu/.arduino15/packages/arduino/tools/avr-gcc/7.3.0-atmel3.6.1-arduino5/bin/avr-g++: exec format error
Erreur de compilation pour la carte Arduino Nano


Mon installation d'arduino se situe désormais dans /home/kubuntu/.local/share/umake/ide/arduino

Code: [Select]
$ file  /home/kubuntu/.arduino15/packages/arduino/tools/avr-gcc/7.3.0-atmel3.6.1-arduino5/bin/avr-g++
/home/kubuntu/.arduino15/packages/arduino/tools/avr-gcc/7.3.0-atmel3.6.1-arduino5/bin/avr-g++: Mach-O 64-bit x86_64 executable, flags:<NOUNDEFS|DYLDLINK|TWOLEVEL|WEAK_DEFINES|BINDS_TO_WEAK>


Je suis certain à 100% d'avoir téléchargé la version "Linux 64bits" la première fois, et maintenant par la méthode ubuntu make je n'ai même plus besoin de choisir, mais j'obtiens toujours un MACH-O. Je n'y comprends plus rien

dbrion06

Comment s'appelle le fichier que vous avez chargé?
Je sais que celui qui gère MACOS a un nom qui finit par zip
Si vous l'avez decompressé en ligne de commande, celui pour MACOS génère un repertoire Arduino.app/
Si c'est celui pour Linux64 bits, le repertoire généré (avant installation) s'appelle  arduino-1.8.10/

On peut trouver, avant installation, où sont les fichiers interessants par
  find Arduino.app/ -name avr-gcc
ou
 find arduino-1.8.10/ -name avr-gcc

depuis le repertoire où ils sont décompressés et desarchivés -avant l'installation-

c'est du moins comme ça qu'ils s'appelaient quand je les ai téléchargés et désarchivés (désolé, mais je les ai jetés, n'en ayant pas l'usage)

Je fais très attention, utilisant des ARMs, à ne pas avoir de binaires pour PC (mais ça peut arriver).

Alors, soit :

a) vous faites un gag assez superbe.

b) Arduino, de temps en temps, ferait n'importe quoi et se mélangerait dans la gestion des téléchargements

c) votre mulot a fait une erreur.

Si c'est le cas b) ou c), la seule façon de rattrapper est de retélécharger très soigneusement et de vérifier qu'il s'agit de fichiers pour PC (comme je vous ai donné un modèle,  comme vous l'avez vérifié avec ls)

Dans le cas b), j'aurais eu de la chance -qui ne me sert à rien-  et pas vous....

Waryard

#12
Oct 21, 2019, 09:04 pm Last Edit: Oct 21, 2019, 09:09 pm by Waryard
Quote
Alors, soit :

a) vous faites un gag assez superbe.

b) Arduino, de temps en temps, ferait n'importe quoi et se mélangerait dans la gestion des téléchargements

c) votre mulot a fait une erreur.

Si c'est le cas b) ou c), la seule façon de rattrapper est de retélécharger très soigneusement et de vérifier qu'il s'agit de fichiers pour PC (comme je vous ai donné un modèle,  comme vous l'avez vérifié avec ls)

Dans le cas b), j'aurais eu de la chance -qui ne me sert à rien-  et pas vous....
Je peux vous assurer que ce n'est pas un gag, qui quand bien même, ne ferais rire personne. J'ai recommencé la procédure de téléchargement et extraction en vidéo, pour la 4e fois je télécharge du Linux 64 et j'obtiens pour la 4e fois du MACH-O : https://webmshare.com/BAA0P

fdufnews

#13
Oct 21, 2019, 09:31 pm Last Edit: Oct 21, 2019, 09:51 pm by fdufnews
Il y a un problème avec le fichier que tu charges.
Je viens de charger le fichier arduino-1.8.10-linux64.tar.xz fait une extraction dans un répertoire et cliqué sur arduino. Et ça marche du premier coup.
Vide le cache de ton navigateur au cas ou.

Edit: pour confirmer que tu as le bon fichier tu peux faire une vérification du checksum. Ils sont disponibles juste en-dessous des liens de chargement (sha512).
fait un shasum -b -a 512 arduino-1.8.10-linux64.tar.xz

Waryard

Il y a un problème avec le fichier que tu charges.
Je viens de charger le fichier arduino-1.8.10-linux64.tar.xz fait une extraction dans un répertoire et cliqué sur arduino. Et ça marche du premier coup.
Vide le cache de ton navigateur au cas ou.

Edit: pour confirmer que tu as le bon fichier tu peux faire une vérification du checksum. Ils sont disponibles juste en-dessous des liens de chargement (sha512).
fait un shasum -b -a 512 arduino-1.8.10-linux64.tar.xz
Je devrais utiliser autre chose que ARK (fourni avec Kubuntu) pour extraire ?


Go Up