web-dev-qa-db-fra.com

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

Lors de la construction de 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 de la source. 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 veux pas.

Y-a t'il une autre possibilité?

34
mahmood

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

35
jrr

Cela a fonctionné pour moi:

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

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é /usr/include/asm-generic dans certaines distributions.

19
nkigen

/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 en tant que package pour votre distribution et cela ne devrait pas vous obliger à télécharger/installer gcc. A 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 pour les rechercher.

Modifier: Sudo apt-get install linux-headers-generic peut fonctionner pour vous.

3
Dave

Il vous manque une partie des packages de développement. Je ne connais pas Ubuntu, mais vous devriez pouvoir demander à son système de gestion de paquets d'installer le paquet contenant /usr/include/asm/errno.h.

Ne pas copier un fichier avec un nom similaire depuis quelque part sur votre système (ou, pire encore, ailleurs). Des fichiers manquants peuvent signifier qu'un paquet est endommagé; Encore une fois, demandez à votre gestionnaire de paquets de tout vérifier et de (ré) installer les pièces manquantes/cassées.

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

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

2
vonbrand

Cela m'a arrangé.

Sudo apt-get install linux-libc-dev:i386
2
Todd Carnes

Sur Ubuntu 16.04 x86_64, vous pouvez essayer ceci:

ln -s /usr/include/x86_64-linux-gnu/asm /usr/include/asm

Cela fonctionne sur mon serveur.

0
Lamb Tan