Question asm / errno.h: Pas de tel fichier ou répertoire


En construisant gcc, j'obtiens cette erreur:

In file included from /usr/include/bits/errno.h:25,
             from /usr/include/errno.h:36,
             from ../.././gcc/tsystem.h:96,
             from ../.././gcc/crtstuff.c:68:
/usr/include/linux/errno.h:4:23: error: asm/errno.h: No such file or directory
make[2]: *** [crtbegin.o] Error 1
make[2]: Leaving directory `/opt/gcc-4.1.2/host-x86_64-unknown-linux-gnu/gcc'

Je construis gcc 4.1 à partir des sources. Je pense que je dois installer build-essential. Cependant, l'installation de ce paquet dans Ubuntu 12.04 téléchargera et installera automatiquement gcc 4.6 et je ne le souhaite pas.

Est-ce qu'il y a un autre moyen?


29
2018-02-10 07:16


origine


Réponses:


Je pense que le paquet que vous voulez est linux-libc-dev . J'ai rencontré cela lors de la construction de 32-on-64; donc j'avais besoin linux-libc-dev:i386 .


30
2018-04-24 20:22



Cela a fonctionné pour moi:

ln -s /usr/include/asm-generic /usr/include/asm

29
2017-10-20 19:11



Cela a fonctionné pour moi:

sudo ln -s /usr/include/asm-generic /usr/include/asm

La raison en est que ce que GCC s'attend à être appelé /usr/include/asm est renommé en /usr/include/asm-generic dans certaines distributions


15
2017-08-03 18:38



/usr/include/asm/errno.h fait partie des en-têtes linux. Je ne peux pas parler directement à Ubuntu 12.04, mais en général, vous pouvez télécharger les sources Linux comme un paquet pour votre distribution et cela ne devrait pas vous obliger à télécharger / installer gcc. À défaut, vous pouvez télécharger manuellement les en-têtes Linux pour la version de votre noyau (uname -a) et utilisez une directive include pour CFLAGS pour spécifier le répertoire à rechercher.

Modifier: sudo apt-get install linux-headers-generic peut travailler pour vous


2
2018-02-10 07:24



Vous manquez une partie des packages de développement. Je ne connais pas Ubuntu, mais vous devriez pouvoir demander au système de gestion des paquets d’installer le paquet contenant /usr/include/asm/errno.h.

Ne pas copier un fichier avec un nom similaire de quelque part sur votre système (ou, pire, ailleurs). Les fichiers manquants peuvent signifier que certains paquets sont endommagés; encore une fois, demandez à votre gestionnaire de colis de vérifier tout et de (re) installer les pièces manquantes / cassées.

Sauf si vous exécutez une version LTS, effectuez une mise à niveau. Votre Ubuntu a quelques 2 ans, c’est-à-dire ancienne.

Pendant que nous y sommes, pourquoi construisez-vous un compilateur aussi ancien sur cette belle planète? GCC actuel vient de sortir 4.9.0, tout ce qui précède 4.7 est une histoire ancienne, plus supportée.


2
2018-04-24 20:57



Cela a corrigé pour moi.

sudo apt-get install linux-libc-dev:i386

2
2018-04-21 17:39



Si vous pouvez trouver:

usr/include/asm-generic/errno.h

en exécutant:

find /usr/include -name errno.h

puis essayez d'exécuter:

cp --archive /usr/include/asm-generic /usr/include/asm

Il peut résoudre ce problème.


-1
2017-07-03 07:36