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é?
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
.
Cela a fonctionné pour moi:
ln -s /usr/include/asm-generic /usr/include/asm
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.
/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.
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é.
Cela m'a arrangé.
Sudo apt-get install linux-libc-dev:i386
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.