Ich habe gcc unter Linux Mint 12 erfolgreich verwendet. Jetzt wird eine Fehlermeldung angezeigt. Ich habe vor kurzem einige .so-Builds durchgeführt und Clang vor nicht allzu langer Zeit installiert, aber seit diesen beiden Ereignissen erfolgreich kompiliert, also nicht sicher, was sich geändert hat. Ich habe den GUI-Software-Manager verwendet, um gcc zu entfernen und dann erneut zu installieren, aber die Ergebnisse sind dieselben:
~/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
Antworten:
Erläuterung
Die Fehlermeldung teilte uns mit, dass die Build-Time-Abhängigkeit (in diesem Fall
cc1
) nicht gefunden wurde. Alles, was wir brauchen, ist die Installation des entsprechenden Pakets auf dem System (mithilfe des Paketmanagers // aus Quellen // auf andere Weise).Was ist
cc1
:entnommen aus dieser Antwort von Alan Shutko .
Lösung für: Ubuntu / Linux Mint
Lösung für: Docker-alpine Umgebung
Wenn Sie sich in einer Docker-Alpine- Umgebung befinden, installieren Sie das Build-Base- Paket, indem Sie Folgendes zu Ihrem
Dockerfile
:Besserer Paketname von Pablo Castellano . Weitere Details hier .
Wenn Sie weitere Pakete für Bauzwecke benötigen, sollten Sie das Paket alpine-sdk hinzufügen :
Entnommen aus Github
Lösung für: CentOS / Fedora
Diese Antwort enthält Anweisungen für CentOS und Fedora Linux
Lösung für: Amazon Linux
Entnommen aus diesem Kommentar von CoderChris
Sie können auch versuchen, fehlende Abhängigkeiten auf diese Weise zu installieren ( es wird jedoch gesagt, dass das Problem dadurch nicht gelöst werden soll ):
Aus dieser Antwort entnommen
quelle
Auf CentOS oder Fedora
quelle
Auf debian / ubuntu habe ich dieses Problem durch Neuinstallation behoben
build-essential
:quelle
Dies liegt daran,
gcc
dass viele andere ausführbare Dateien aufgerufen werden, um die Verarbeitung der Eingabe abzuschließen, undcc1
sich nicht im enthaltenen Pfad befindet.Auf Shell-Typ
whereis cc1
. Wenncc1
es gefunden wird, ist es besser, einen Softlink im Verzeichnis von zu erstellengcc
. Andernfallscc1
wird nicht installiert und Sie müssen gcc-c ++ mit dem Paketmanager installieren .quelle
ln -s cc cc1
Da dies das erste Ergebnis bei Google ist, wollte ich nur meine Erfahrungen mit Amazon Linux dokumentieren. Die Installation hat
gcc-c++.noarch
das Problem behoben:sudo yum install gcc-c++.noarch
Einige Leute berichteten auch über diese Alternative als Lösung:
sudo yum install gcc72-c++
quelle
.noarch
bereits installiert.Ich bin heute auf ein ähnliches Problem gestoßen - ein Mitarbeiter konnte seine Software nicht erstellen, aber ich konnte sie erstellen. Als er rannte
gcc
konnte es nicht findencc1
.Sein ausführbarer Pfad sah vernünftig aus, aber die Tatsache, dass ich den Fehler nicht einfach wiederholen konnte, deutete auf etwas in seiner Umgebung als Ursache hin.
Schließlich fanden wir
GCC_EXEC_PREFIX
in seiner Umgebung definiert, was der Schuldige war undgcc
bei der Suche nach irreführend warcc1
. Dies war Teil seiner Shell-Startskripte und sollte eine Einschränkung eines SPARC / Solaris-Systems umgehen, das nicht mehr verwendet wird. Das Problem wurde behoben, indem diese Umgebungsvariable nicht festgelegt wurde.http://gcc.gnu.org/onlinedocs/gcc/Environment-Variables.html
quelle
Ich habe dieses Problem durch explizite Installation von g ++ behoben:
Bei Ubuntu 12.04 ist bei der Installation von Pandas ein Problem aufgetreten. (Danke Perilbrain.)
quelle
yum install gcc-c++
habe das Problem behoben.quelle
Stellen Sie sicher, dass Ihre
GCC_EXEC_PREFIX(env)
nicht exportiert undPATH
in die richtige Werkzeugkette exportiert wird.quelle
Ich habe dies kurz nach dem Kompilieren und Installieren eines glänzenden neuen GCC - Version 8.1 - auf RHEL 7 erlebt. Am Ende war es ein Berechtigungsproblem. Meine Wurzel umask war der Schuldige. Ich fand schließlich
cc1
versteckt in/usr/local/libexec
:Die Berechtigungen für die dort führenden Verzeichnisse erlaubten jedoch nicht mein Standardbenutzerkonto:
Eine schnelle Rekursion
chmod
zum Hinzufügen von Weltlese- / Ausführungsberechtigungen hat das Problem behoben:Und jetzt
gcc
kanncc1
ich finden, wenn ich darum bitte, etwas zu kompilieren!quelle
Dies kann auch die angezeigte Fehlermeldung sein, wenn Sie versuchen, 32-Bit-GCC-Binärdateien auf einem 64-Bit-Betriebssystem auszuführen und 32-Bit-Glibc fehlt. In dieser Readme- Datei heißt es: "Für ein 64-Bit-System sind 32-Bit-libc und libncurses erforderlich, um die Tools auszuführen." In diesem Fall gibt es kein Problem mit dem Pfad und cc1 wird tatsächlich gefunden, aber als fehlend gemeldet, da kein 32-Bit-glibc vorhanden ist.
quelle
Was mir geholfen hat, war
llvm-gcc
stattdessen zu verwenden :quelle
Nur um meine Probleme mit diesem Problem zu dokumentieren, obwohl es nur ein konkretes Beispiel für andere Antworten zu sein scheint; Als relativer Neuling habe ich das Gefühl, dass dies anderen helfen könnte.
Lösung:
Ich habe '/ usr / bin' am Anfang von PATH für eine einzelne Sitzung mit hinzugefügt
PATH='/usr/path/:$PATH'
und alles begann gut zu funktionieren.Ich habe gedit verwendet, um den PATH dauerhaft zu aktualisieren, nachdem ich sichergestellt hatte, dass meine regulären Toolchains nicht beschädigt werden.
Erläuterung:
Ich habe mehrere Toolchains unter Ubuntu 14.04LTS installiert und benutze regelmäßig nur ein paar. Als ich versuchte, gcc über die Befehlszeile zu verwenden, wurde das Problem vom OP beschrieben. '/ usr / bin' befindet sich im PFAD, aber hinter den anderen Positionen der Toolchain. Es stellt sich heraus, dass cc1 für diese anderen Toolchains nicht mit gcc kompatibel ist.
quelle
Nur um @ maxkoryukovs Antwort bezüglich Alpine zu ergänzen.
Das Äquivalent zu Debian
build-essential
in Alpine istbuild-base
. In der Tatalpine-sdk
hängt das oben erwähnte davon abbuild-base
.quelle
Sie können dies beheben, indem Sie Folgendes ausführen: Auf Fedora:
quelle
Ich habe dieses Problem bei einer relativ neuen Installation von Fedora 27 festgestellt. Ich habe alle anderen Vorschläge oder deren Entsprechungen ausprobiert. Die Installation der verschiedenen Pakete sagte entweder "bereits installiert" oder installierte etwas Neues, was nicht half.
Behoben mit
quelle
Unter Scientific Linux 6 (ähnlich wie CentOS 6 - SL wird jetzt durch CentOS, AIUI ersetzt) musste ich das verwenden,
/usr/sbin/prelink -av -mR
was ich unter https://stelfox.net/blog/2014/08/dependency-prelink-issues/ vorgeschlagen fand.Bis ich das tat, bekam ich einen cc1-Fehler,
gcc: error trying to exec 'cc1': execvp: No such file or directory
als ich versuchte zu kompilieren, und gcc --version meldete 4.2.2 anstelle von 4.4.7, obwohl diese Version von yum gemeldet wurde.Es kann verwandt sein oder nicht, aber dem System ist auf / var der Speicherplatz ausgegangen
quelle
Es ist in diesem Paket (Ubuntu 19.04):
quelle
g++
in Ordnung. Oder besser,build-essential
zieht auch einige Bibliotheken ein.In meinem seltenen Fall war es,
color wrapper
wer verwöhntegcc
. Gelöst durch Deaktivieren descw
Ausschlusses seines Verzeichnisses/usr/libexec/cw
von derPATH
Umgebungsvariablen.quelle
Warum passiert das? Wenn Sie eine neue Linux-Kopie installieren, ist der gcc-Compiler bereits im Lieferumfang enthalten. Es enthält nur die Dateien und Binärdateien, die zum Ausführen des Linux verwendet werden (natürlich um Platz und Zeit zu sparen).
Wie löse ich diesen Fehler? Sie müssen lediglich Ihre Pakete über den Paketmanager aktualisieren und die Build-Essential-Pakete neu installieren. Die Befehle können auf verschiedenen Kerneln unterschiedlich sein.
quelle