web-dev-qa-db-fra.com

asm / errno.h: Aucun fichier ou répertoire de ce type

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:

  1. Extrayez gcc-4.8.1.tar.gz dans un dossier
  2. Ouvrir la fenêtre du terminal
  3. cd gcc-4.8.1
  4. ./configure --build=x86_64-linux-gnu
  5. 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.

7
Meenor

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.

4
muru

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.

5
Nicolai S