web-dev-qa-db-fra.com

Erreur Gcc: gcc: erreur lors de la tentative d'exécution de 'cc1': execvp: Aucun fichier ou répertoire de ce type

J'utilise avec succès gcc sous Linux Mint 12. Maintenant, je reçois une erreur. J'ai récemment fait quelques versions .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 suis pas sûr de ce qui a changé. J'ai utilisé le logiciel GUI Software Manager 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
67
Scooter

Sur debian/ubuntu, j'ai résolu ce problème en réinstallant build-essential:

Sudo apt-get update
Sudo apt-get install --reinstall build-essential
45
mchid

Sur CentOS ou Fedora

yum install gcc-c++ 
41
Antony Hatchkins

En effet, gcc appelle de nombreux autres exécutables pour terminer le traitement de l'entrée et cc1 ne figure pas dans le chemin d'accès inclus.

Sur le type de shell whereis cc1. Si cc1 est trouvé, il est préférable de créer un lien symbolique dans le répertoire de gcc; sinon, cc1 n'est pas installé et vous devez installer gcc-c ++ en utilisant le gestionnaire de paquets.

24
perilbrain

1. Explication

Le message d'erreur vous indique que la dépendance au moment de la construction n'a pas été trouvée. Il vous suffit donc d'installer le package approprié sur votre système (à l'aide du gestionnaire de packages, à partir des sources ou d'une autre manière)

Qu'est-ce que cc1:

cc1 est la commande interne qui extrait les fichiers en prétraitement en langage C et les convertit en assembleur. C'est la partie qui compile le C. Pour C++, il y a cc1plus et d'autres commandes internes pour différents langages.

extrait de cette réponse de Alan Shutko .

2. solutions

Ubuntu/Linux Mint

Sudo apt-get install --reinstall build-essential

Environnement Docker-Alpine

Si vous êtes dans l'environnement docker-Alpine, installez le build-base en ajoutant ceci:

RUN apk add build-base

à votre Dockerfile. Si vous avez besoin de plus de paquets à des fins de construction, pensez à ajouter le paquet Alpine-sdk .

Extrait de github

19
maxkoryukov

J'ai rencontré un problème similaire aujourd'hui: un collègue ne pouvait pas créer son logiciel, mais je pouvais le construire. Lorsqu'il a exécuté gcc, il n'a pas pu trouver cc1.

Son chemin exécutable semblait raisonnable, mais le fait que je ne puisse pas facilement reproduire l'échec laissait supposer que son environnement était la cause.

Finalement, nous avons trouvé GCC_EXEC_PREFIX défini dans son environnement qui était le coupable et induisait gcc dans la recherche de cc1. Cela faisait partie de ses scripts de démarrage du shell et visait à contourner une limitation sur un système SPARC/Solaris qui n’est plus utilisée. 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

9
deaks

Amazon Linux: résolution du problème GCC

Comme cela apparaît comme le premier résultat sur Google, je voulais simplement documenter mon expérience avec Amazon Linux. L'installation de gcc-c++.noarch a résolu le problème:

Sudo yum install gcc-c++.noarch

Certaines personnes ont également signalé cette solution comme solution:

Sudo yum install gcc72-c++

8
Renato Byrro

J'ai résolu ce problème en installant explicitement g ++:

Sudo apt-get install g++

Un problème a été rencontré sous Ubuntu 12.04 lors de l’installation de pandas. (Merci périlbrain.)

8
Mark Chackerian

yum install gcc-c++ a fait le correctif.

6
Suresh Ghanta

Assurez-vous que votre GCC_EXEC_PREFIX(env) n'est pas exporté et que votre PATH est exportée dans la chaîne d'outils droite.

3
Vijay Nag

Juste pour documenter mes problèmes avec ce problème, même si cela semble être un exemple spécifique d’autres réponses; en tant que parent débutant, je pense que cela pourrait aider les autres. 

Solution:

J'ai ajouté '/ usr/bin' au début de PATH pour une session unique 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 quelques-unes régulièrement. Lorsque j'ai essayé d'utiliser gcc à partir de la ligne de commande, le problème a été décrit par l'OP. '/ usr/bin' est dans PATH mais derrière les autres emplacements de la chaîne d'outils. Il s'avère que le cc1 pour ces autres chaînes d'outils est incompatible avec gcc.

1
JSunderland

Ce qui m'a aidé, c'est d'utiliser plutôt llvm-gcc:

ln -s $(which llvm-gcc) /usr/local/bin/gcc
1
Alex

Je l’ai expérimenté peu de temps après avoir compilé et installé un tout nouveau GCC - version 8.1 - sur RHEL 7. En fin de compte, il s’agissait d’un problème d’autorisations; ma racine umask était le coupable. J'ai finalement trouvé cc1 caché dans /usr/local/libexec:

[root@nacelle gdb-8.1]# ls -l /usr/local/libexec/gcc/x86_64-pc-linux-gnu/8.1.0/ | grep cc1
-rwxr-xr-x 1 root root 196481344 Jul  2 13:53 cc1

Cependant, les autorisations sur les répertoires menant là-bas n'autorisaient pas mon compte d'utilisateur standard:

[root@nacelle gdb-8.1]# ls -l /usr/local/libexec/
total 4
drwxr-x--- 3 root root 4096 Jul  2 13:53 gcc
[root@nacelle gdb-8.1]# ls -l /usr/local/libexec/gcc/
total 4
drwxr-x--- 3 root root 4096 Jul  2 13:53 x86_64-pc-linux-gnu
[root@nacelle gdb-8.1]# ls -l /usr/local/libexec/gcc/x86_64-pc-linux-gnu/
total 4
drwxr-x--- 4 root root 4096 Jul  2 13:53 8.1.0

Une chmod récursive rapide pour ajouter des autorisations de lecture/exécution universelles a corrigé le problème:

[root@nacelle 8.1.0]# cd /usr/local/libexec
[root@nacelle lib]# ls -l | grep gcc
drwxr-x---  3 root root     4096 Jul  2 13:53 gcc
[root@nacelle lib]# chmod -R o+rx gcc
[root@nacelle lib]# ls -l | grep gcc
drwxr-xr-x  3 root root     4096 Jul  2 13:53 gcc

Et maintenant, gcc peut trouver cc1 quand je lui demande de compiler quelque chose!

1
jefe2000

Cela peut également être le message d'erreur affiché si vous essayez d'exécuter des fichiers binaires gcc 32 bits sur un système d'exploitation 64 bits et que la glibc 32 bits est manquante. Selon ce readme : "Pour les systèmes 64 bits, libc et libncurses 32 bits sont nécessaires pour exécuter les outils." mais signalé comme manquant comme aucune glibc 32 bits.

1
sfrank

Sur Scientific Linux 6 (similaire à CentOS 6 - SL est maintenant remplacé par CentOS, AIUI), je devais utiliser /usr/sbin/prelink -av -mR que j'ai trouvé suggéré sur https://stelfox.net/blog/2014/08/dependency-prelink -problèmes/

Jusqu'à ce que je fasse cela, j'ai eu une erreur cc1 gcc: error trying to exec 'cc1': execvp: No such file or directory quand j'ai essayé de compiler, et gcc --version a rapporté 4.2.2 au lieu de 4.4.7, malgré le fait que cette version soit rapportée par yum.

Cela peut être lié ou non, mais le système manquait d’espace sur/var

0
Russell Jones

Juste pour compléter la réponse de @ maxkoryukov concernant Alpine.

L'équivalent du build-essential de Debian dans Alpine est build-base. En fait, le Alpine-sdk mentionné ci-dessus dépend de build-base.

/ # apk info -R build-base
build-base-0.5-r1 depends on:
binutils
file
gcc
g++
make
libc-dev
fortify-headers

/ # apk info -R Alpine-sdk
Alpine-sdk-1.0-r0 depends on:
abuild
build-base
git
0
Pablo Castellano

Vous pouvez résoudre ce problème en lançant ceci: Sur Fedora:

Sudo dnf install redhat-rpm-config
0
victor sosa

C'est dans ce paquet (Ubuntu 19.04): 

  Sudo apt install g++-6
0
ole

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 dit "déjà installé" ou installe quelque chose de nouveau qui n'a pas aidé.

Fixe avec

# dnf remove gcc
# dnf install gcc gcc-c++
0
wallyk