J'essaye d'installer gcc 4.8.1 pour le moment. Actuellement, 4.8.2 et 4.9.1 sont installés. J'ai téléchargé un 4.8.1 à partir d'ici http://gcc.cybermirror.org/releases/gcc-4.8.1/ . Après avoir extrait les fichiers, j’ai fait un ./configure
puis essayé make
. À la fin de make
, j'obtiens cette erreur
/usr/include/linux/errno.h:1:23: fatal error: asm/errno.h: No such file or directory
#include <asm/errno.h>
Je suis nouveau sur Linux donc je ne sais pas comment trouver ou ajouter ce fichier d'en-tête.
Edit: Étapes que j'ai faites:
cd gcc-4.8.1
./configure --build=x86_64-linux-gnu
make -j4
Je ne sais pas ce que j'ai fait différemment mais ça a finalement été compilé. Après cela, j'ai fait installer. Ma question maintenant, comment puis-je utiliser ceci au lieu de 4.8.2, qui utilise toujours la commande gcc-4.8 par défaut.
L'en-tête asm/errno.h
est fourni par ne variété de paquets . Bizarre que gcc
en ait besoin, mais vous pouvez essayer:
Sudo apt-get install linux-libc-dev
Vous devez également indiquer à GCC de rechercher une architecture et un emplacement spécifique du système d'exploitation pour les en-têtes:
../configure --build=x86_64-linux-gnu
(ou i386-linux-gnu
pour Ubuntu 32 bits).
Il est fortement recommandé, lors de la création de sources, d'utiliser l'indicateur --prefix
(et avec GCC, l'indicateur --program-suffix
) lors de la configuration. Comme vous ne l'avez pas encore fait, essayez d'exécuter /usr/bin/gcc
.
Ainsi:
tar xf gcc-4.8.1.tar.gz
mkdir gcc
cd gcc
../gcc-4.8.1/configure --build=x86_64-linux-gnu --prefix=/usr/local --program-suffix=-4.8.1
make -j
Sudo make install
Maintenant, vos fichiers binaires GCC seront installés sur /usr/local/bin/
et d'autres éléments dans d'autres dossiers dans /usr/local
.
Par exemple:
$ /usr/local/bin/gcc-4.8.1 # or simply gcc-4.8.1, since this folder is in your PATH
Notez que j'utilise configure
et make
à partir d'un répertoire différent, en dehors de l'emplacement de la source GCC? C'est ainsi que les documents GCC recommandent que GCC soit construit.
J'ai la même erreur sur ubuntu-xenial 4.4.0-75-generic
.
J'ai trouvé que j'avais un dossier /usr/include/asm-generic
, mais pas /usr/include/asm
, que gcc cherchait.
La création d'un lien symbolique l'a résolu pour moi.
Sudo ln -s /usr/include/asm-generic/ /usr/include/asm
Fair warning: Bien que, parfois, il faut faire ce genre de tromperie, ce n'est pas toujours une bonne idée juste parce que ça marche. Je le fais dans une machine virtuelle, que je peux recréer en exécutant un simple script, et c'est pourquoi ce n'est pas grave si je casse quelque chose.