J'ai utilisé avec succès gcc sur Linux Mint 12. Maintenant, j'obtiens une erreur. J'ai récemment fait des builds .so et installé Clang il n'y a pas si longtemps, mais j'ai compilé avec succès depuis ces deux événements, donc je ne sais pas ce qui a changé. J'ai utilisé le gestionnaire de logiciels GUI pour supprimer puis réinstaller gcc, mais les résultats sont les mêmes:
~/code/c/ut: which gcc
/usr/bin/gcc
~/code/c/ut: gcc -std=c99 -Wall -Wextra -g -c object.c
gcc: error trying to exec 'cc1': execvp: No such file or directory
Réponses:
Explication
Le message d'erreur nous a dit que la dépendance au moment de la construction (dans ce cas, elle l'est
cc1
) n'a pas été trouvée, donc tout ce dont nous avons besoin - installer le package approprié sur le système (en utilisant le gestionnaire de packages // à partir des sources // d'une autre manière)Qu'est-ce que
cc1
:tiré de cette réponse par Alan Shutko .
Solution pour: Ubuntu / Linux Mint
Solution pour: environnement Docker-alpin
Si vous êtes dans un environnement docker-alpine , installez le package build-base en ajoutant ceci à votre
Dockerfile
:Meilleur nom de package fourni par Pablo Castellano . Plus de détails ici .
Si vous avez besoin de plus de packages à des fins de construction, envisagez d'ajouter le package alpine-sdk :
Tiré de github
Solution pour: CentOS / Fedora
Cette réponse contient des instructions pour CentOS et Fedora Linux
Solution pour: Amazon Linux
Tiré de ce commentaire par CoderChris
Vous pouvez également essayer d'installer les dépendances manquées par ceci ( cependant, on dit que cela ne résout pas le problème ):
Tiré de cette réponse
la source
Sur CentOS ou Fedora
la source
Sur debian / ubuntu, j'ai résolu ce problème en réinstallant
build-essential
:la source
En effet, il
gcc
appelle de nombreux autres exécutables pour terminer le traitement de l'entrée etcc1
ne se trouve pas dans le chemin inclus.Sur le type de coque
whereis cc1
. Sicc1
est trouvé, il vaut mieux continuer et créer un lien logiciel dans le répertoire degcc
; sinon,cc1
n'est pas installé et vous devez installer gcc-c ++ à l'aide du gestionnaire de packages.la source
ln -s cc cc1
Puisque cela apparaît comme le premier résultat sur Google, je voulais juste documenter mon expérience avec Amazon Linux. L'installation a
gcc-c++.noarch
résolu le problème:sudo yum install gcc-c++.noarch
Certaines personnes ont également signalé cette alternative comme une solution:
sudo yum install gcc72-c++
la source
.noarch
est déjà installé.J'ai rencontré un problème similaire aujourd'hui - un collègue ne pouvait pas créer son logiciel mais je pouvais le créer. Quand il a couru,
gcc
il n'a pas pu trouvercc1
.Son chemin exécutable semblait raisonnable mais le fait que je ne puisse pas facilement reproduire l'échec suggérait quelque chose dans son environnement comme cause.
Finalement, nous avons trouvé
GCC_EXEC_PREFIX
défini dans son environnement qui était le coupable et était trompeurgcc
dans la recherchecc1
. Cela faisait partie de ses scripts de démarrage shell et visait à contourner une limitation sur un système SPARC / Solaris qui n'est plus utilisé. Le problème a été résolu en ne définissant pas cette variable d'environnement.http://gcc.gnu.org/onlinedocs/gcc/Environment-Variables.html
la source
J'ai résolu ce problème en installant explicitement g ++:
Un problème a été rencontré sur Ubuntu 12.04 lors de l'installation de pandas. (Merci perilbrain.)
la source
yum install gcc-c++
fait le correctif.la source
Assurez-vous que votre
GCC_EXEC_PREFIX(env)
n'est pas exporté et que votrePATH
est exporté vers la bonne chaîne d'outils.la source
J'ai expérimenté cela peu de temps après avoir compilé et installé un nouveau GCC brillant - version 8.1 - sur RHEL 7. En fin de compte, cela a fini par être un problème de permissions; mon umask racine était le coupable. J'ai finalement trouvé
cc1
caché dans/usr/local/libexec
:Cependant, les autorisations sur les répertoires qui y mènent n'autorisaient pas mon compte utilisateur standard:
Un rapide récursif
chmod
pour ajouter des autorisations de lecture / exécution du monde l'a corrigé:Et maintenant
gcc
peut trouvercc1
quand je lui demande de compiler quelque chose!la source
Cela peut également être le message d'erreur affiché si vous essayez d'exécuter des binaires gcc 32 bits sur un système d'exploitation 64 bits et une glibc 32 bits manquante. D'après ce fichier readme : "Pour les systèmes 64 bits, une libc 32 bits et des libncurses sont nécessaires pour exécuter les outils.". Dans ce cas, il n'y a pas de problème avec le chemin et cc1 est effectivement trouvé, mais signalé comme manquant comme aucune glibc 32 bits.
la source
Ce qui m'a aidé, c'est d'utiliser à la
llvm-gcc
place:la source
Juste pour documenter mon problème avec ce problème, même si cela semble être un exemple spécifique d'autres réponses; en tant que débutant relatif, je pense que cela pourrait aider les autres.
Solution:
J'ai ajouté '/ usr / bin' au début de PATH pour une seule session en utilisant
PATH='/usr/path/:$PATH'
et tout a commencé à fonctionner correctement.J'ai utilisé gedit pour mettre à jour le PATH de manière permanente, après m'être assuré qu'il ne briserait pas mes chaînes d'outils habituelles.
Explication:
J'ai plusieurs chaînes d'outils installées sur Ubuntu 14.04LTS et j'en utilise régulièrement quelques-unes. Quand j'ai essayé d'utiliser gcc à partir de la ligne de commande, j'ai eu le problème décrit par l'OP. '/ usr / bin' est dans le PATH mais il est derrière les autres emplacements de la chaîne d'outils. Il s'avère que le cc1 de ces autres chaînes d'outils est incompatible avec gcc.
la source
Juste pour compléter la réponse de @ maxkoryukov concernant Alpine.
L'équivalent de Debian
build-essential
dans Alpine estbuild-base
. En fait, ce qui précèdealpine-sdk
dépend debuild-base
.la source
Vous pouvez résoudre ce problème en exécutant ceci: Sur Fedora:
la source
J'ai rencontré ce problème sur une installation relativement récente de Fedora 27. J'ai essayé toutes les autres suggestions ou leurs équivalents; l'installation des différents paquets a soit dit "déjà installé" ou installé quelque chose de nouveau qui n'a pas aidé.
Fixé avec
la source
Sur Scientific Linux 6 (similaire à CentOS 6 - SL est maintenant remplacé par CentOS, AIUI), j'ai dû utiliser
/usr/sbin/prelink -av -mR
ce que j'ai trouvé suggéré à https://stelfox.net/blog/2014/08/dependency-prelink-issues/Jusqu'à ce que je fasse cela, j'ai eu une erreur cc1
gcc: error trying to exec 'cc1': execvp: No such file or directory
lorsque j'ai essayé de compiler, et gcc --version a signalé 4.2.2 au lieu de 4.4.7, bien que cette version ait été rapportée par yum.Cela peut ou non être lié, mais le système manquait d'espace sur / var
la source
C'est dans ce package (Ubuntu 19.04):
la source
g++
est très bien. Ou mieux,build-essential
tire aussi quelques bibliothèques.Dans mon cas rare, c'est
color wrapper
qui a gâtégcc
. Résolu en désactivant l'cw
exclusion de son répertoire/usr/libexec/cw
dePATH
la variable d'environnement.la source
Pourquoi cela arrive-t-il? Lorsque vous installez une nouvelle copie de Linux, le compilateur gcc est livré avec lui. Il ne contient que les fichiers et les binaires qui sont utilisés pour exécuter Linux (pour économiser de l'espace et du temps, évidemment).
Comment résoudre cette erreur? Tout ce dont vous avez besoin est de mettre à jour vos packages via le gestionnaire de packages et de réinstaller les packages essentiels à la construction. Les commandes peuvent être différentes selon les noyaux.
la source