Quelle est cette erreur GCC sous Linux et comment la résoudre? gcc: erreur interne du compilateur: instruction illégale (programme en tant que)

Je tape gcc hello.c et ceci apparaît:

 gcc: internal comstackr error: Illegal instruction (program as) Please submit a full bug report, with preprocessed source if appropriate. See  for instructions. 

hello.c is just:

 int main() { return 0; } 

Je ne vois aucun moyen de simplifier les choses! (La même chose s’est produite avec printf ici.)

Alors: comment résoudre ce problème? Je suis sur Raspian, sur Raspberry Pi.

modifier

gcc -v donne

 Using built-in specs. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/usr/lib/gcc/arm-linux-gnueabihf/4.6/lto-wrapper Target: arm-linux-gnueabihf Configured with: ../src/configure -v --with-pkgversion='Debian 4.6.3-14+rpi1' --with-bugurl=file:///usr/share/doc/gcc-4.6/README.Bugs --enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.6 --enable-shared --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.6 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --enable-plugin --enable-objc-gc --disable-sjlj-exceptions --with-arch=armv6 --with-fpu=vfp --with-float=hard --enable-checking=release --build=arm-linux-gnueabihf --host=arm-linux-gnueabihf --target=arm-linux-gnueabihf Thread model: posix gcc version 4.6.3 (Debian 4.6.3-14+rpi1) 

Non je ne l’ai pas installé.

En ce qui concerne les mises à jour, sudo apt-get install gcc donne

 Reading package lists... Done Building dependency tree Reading state information... Done gcc is already the newest version. 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 

Oui, vous pouvez exécuter en as , il est dit Illegal instruction sans arguments.

Je n’ai aucune idée de ce qu’est un espace d’échange.

gcc -O0 -g hello.c donne la même erreur.

gcc ne reconnaît pas --enable-debug .

    Je l’ai! J’ai désinstallé gcc, installé gcc-4.7 et … rien.

    J’ai effacé la fin de gcc-4.6 et relancé sudo apt-get install gcc-4.7 et … rien.

    J’ai mis à jour binutils et … ça a fonctionné!

    Donc, as n’a pas semblé être affecté par la mise à jour de GCC, mais l’actualiser plus directement l’a fait pour moi.

    (C’était du 2.22-7.1 au 2.22-8, si cela peut aider quelqu’un.)

    Je ne peux que faire la lumière sur le message d’erreur:

    gcc: erreur interne du compilateur: instruction illégale (programme en tant que)

    gcc fait plusieurs choses lors de la compilation. Il traduit d’abord votre programme C en assembleur, puis convertit l’assembleur en code machine.

    Le nom du programme assembleur avec gcc est juste as . Le message d’erreur vous indique donc que l’exécution de l’assembleur échoue, car l’exécutable de l’assembleur contient une instruction non conforme.

    Il peut s’agir d’une erreur matérielle, ce qui signifie que le fichier exécutable de l’assembleur est endommagé.

    Vérifier:

    1. Est-ce que gcc -S hello.c fonctionne? Cela devrait créer un “hello.s” contenant le code C compilé pour l’assembleur
    2. Vous pouvez essayer avec gcc -v -c hello.c de savoir ce qui se passe exactement.

    Trouvé sur les forums de raspberryPi:

    Saisi les sources et essayé une compilation croisée sur une boîte x86-64 pour une cible générique. Quelque chose à l’intérieur de filter / hq2x.cpp fait en sorte que GCC devienne fou et consum de la mémoire et permute, de sorte que je ne serais pas du tout surpris si cela déclenche une erreur fatale sur un Pi. Certaines sources suggèrent qu’il s’agit du débordement de la stack interne du compilateur (cc1plus).

    Une solution possible consiste à exécuter le script de configuration avec –enable-debug – Cela devrait réduire l’optimisation au minimum et éviter les dépassements de capacité de la stack au désortingment de la taille binary accrue.

    Donc, vous pouvez essayer de définir les drapeaux du compilateur sur

     -O0 -g 

    et vérifier si cela aide.

    Vous avez un problème similaire.

    Mais cela s’est produit après le déplacement de l’image VirtualBox (avec Xubuntu 16.04 / gcc-5) de la machine Haswell à Sandy Bridge. Le problème se trouvait quelque part dans les paquets build-essential / gcc / binutils. Je les ai tous réinstallés (avec apt remove et apt install – pas de réinstallation one-shot) – cela a aidé.

    Essayez de mettre à jour le compilateur et essayez

     sudo apt-get install build-essential 

    Cela pourrait résoudre le problème.