Z powodzeniem używam gcc na Linux Mint 12. Teraz pojawia się błąd. Niedawno robiłem kompilacje .so i instalowałem Clang nie tak dawno, ale pomyślnie kompilowałem od czasu obu tych wydarzeń, więc nie jestem pewien, co się zmieniło. Użyłem Menedżera oprogramowania GUI, aby usunąć, a następnie ponownie zainstalować gcc, ale wyniki są takie same:
~/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
Odpowiedzi:
Wyjaśnienie
Komunikat o błędzie powiedział nam, że
cc1
nie znaleziono zależności czasu budowania (w tym przypadku jest ), więc wszystko czego potrzebujemy - zainstaluj odpowiedni pakiet w systemie (używając menedżera pakietów // ze źródeł // w inny sposób)Co to jest
cc1
:zaczerpnięte z tej odpowiedzi przez Alana Shutko .
Rozwiązanie dla: Ubuntu / Linux Mint
Rozwiązanie dla: środowiska Docker-alpine
Jeśli pracujesz w środowisku docker-alpine, zainstaluj pakiet build-base , dodając do
Dockerfile
:Lepszą nazwę pakietu podał Pablo Castellano . Więcej szczegółów tutaj .
Jeśli potrzebujesz więcej pakietów do celów budowania, rozważ dodanie pakietu alpine-sdk :
Zaczerpnięte z github
Rozwiązanie dla: CentOS / Fedora
Ta odpowiedź zawiera instrukcje dla CentOS i Fedora Linux
Rozwiązanie dla: Amazon Linux
Zrobione z tego komentarza przez CoderChris
Możesz także spróbować zainstalować pominięte zależności w ten sposób ( chociaż mówi się, że nie rozwiązuje to problemu ):
Zaczerpnięte z tej odpowiedzi
źródło
W CentOS lub Fedorze
źródło
Na Debianie / Ubuntu naprawiłem ten problem poprzez ponowną instalację
build-essential
:źródło
Dzieje się tak, ponieważ
gcc
wywołuje wiele innych plików wykonywalnych w celu zakończenia przetwarzania danych wejściowych icc1
nie ma ich w dołączonej ścieżce.Na typ muszli
whereis cc1
. Jeślicc1
zostanie znaleziony, lepiej idź dalej i utwórz miękki link w katalogugcc
; w przeciwnym raziecc1
nie jest instalowany i musisz zainstalować gcc-c ++ za pomocą menedżera pakietów.źródło
ln -s cc cc1
Ponieważ pojawia się to jako pierwszy wynik w Google, chciałem tylko udokumentować moje doświadczenia z Amazon Linux. Instalacja
gcc-c++.noarch
rozwiązała problem:sudo yum install gcc-c++.noarch
Niektóre osoby również zgłosiły tę alternatywę jako rozwiązanie:
sudo yum install gcc72-c++
źródło
.noarch
jest już zainstalowany.Dziś napotkałem podobny problem - współpracownik nie mógł zbudować swojego oprogramowania, ale mogłem je zbudować. Kiedy biegł,
gcc
nie mógł znaleźćcc1
.Jego wykonywalna ścieżka wyglądała rozsądnie, ale fakt, że nie mogłem łatwo odtworzyć awarii, sugerował coś w jego otoczeniu jako przyczynę.
W końcu znaleźliśmy
GCC_EXEC_PREFIX
w jego środowisku osobę odpowiedzialną za winowajcę i wprowadzającągcc
w błąd podczas poszukiwańcc1
. Było to częścią jego skryptów startowych powłoki i miało na celu obejście ograniczenia systemu SPARC / Solaris, który nie jest już używany. Problem został rozwiązany, nie ustawiając tej zmiennej środowiskowej.http://gcc.gnu.org/onlinedocs/gcc/Environment-Variables.html
źródło
Naprawiłem ten problem, jawnie instalując g ++:
Wystąpił problem w systemie Ubuntu 12.04 podczas instalowania pand. (Dzięki perilbrain.)
źródło
yum install gcc-c++
naprawił.źródło
Upewnij się, że
GCC_EXEC_PREFIX(env)
nie jest eksportowany, aPATH
jest eksportowany do odpowiedniego łańcucha narzędzi.źródło
Doświadczyłem tego wkrótce po skompilowaniu i zainstalowaniu nowego, błyszczącego GCC - wersja 8.1 - na RHEL 7. Ostatecznie skończyło się na problemie z uprawnieniami; mój główny umask był winowajcą. W końcu znalazłem
cc1
ukrywanie się w/usr/local/libexec
:Jednak uprawnienia do prowadzących tam katalogów nie pozwoliły na moje standardowe konto użytkownika:
Szybkie rekurencyjne
chmod
dodawanie światowych uprawnień do odczytu / wykonywania naprawiło to:A teraz
gcc
mogę znaleźć,cc1
kiedy poproszę go o skompilowanie czegoś!źródło
Może to być również wyświetlany komunikat o błędzie, jeśli próbujesz uruchomić 32-bitowe pliki binarne gcc w 64-bitowym systemie operacyjnym i brakuje 32-bitowej biblioteki glibc. Zgodnie z tym plikiem Readme : „W przypadku systemu 64-bitowego do uruchomienia narzędzi wymagane są 32-bitowe biblioteki libc i libncurses”. W tym przypadku nie ma problemu ze ścieżką, a cc1 jest faktycznie znalezione, ale zgłoszone jako brakujące jako brak 32-bitowego glibc.
źródło
Pomogło mi użycie
llvm-gcc
zamiast tego:źródło
Tylko po to, aby udokumentować mój problem z tym problemem, chociaż wydaje się, że jest to konkretny przykład innych odpowiedzi; jako względny nowicjusz czuję, że może to pomóc innym.
Rozwiązanie:
Dodałem '/ usr / bin' na początku PATH dla jednej sesji używając
PATH='/usr/path/:$PATH'
i wszystko zaczęło działać dobrze.Użyłem gedit do trwałej aktualizacji PATH, po upewnieniu się, że nie zepsuje moich zwykłych łańcuchów narzędzi.
Wyjaśnienie:
Mam wiele łańcuchów narzędzi zainstalowanych w systemie Ubuntu 14.04LTS i regularnie używam tylko kilku. Kiedy próbowałem użyć gcc z wiersza poleceń, pojawił się problem opisany przez OP. '/ usr / bin' znajduje się w PATH, ale za innymi lokalizacjami toolchain. Okazuje się, że cc1 dla tych innych łańcuchów narzędzi jest niekompatybilne z gcc.
źródło
Żeby uzupełnić odpowiedź @ maxkoryukov dotyczącą Alpine.
Odpowiednikiem Debiana
build-essential
w Alpine jestbuild-base
. W rzeczywistości powyższealpine-sdk
zależy odbuild-base
.źródło
Możesz to naprawić, uruchamiając to: W Fedorze:
źródło
Wystąpił ten problem podczas całkiem nowej instalacji Fedory 27. Wypróbowałem wszystkie inne sugestie lub ich odpowiedniki; instalowanie różnych pakietów mówiło „już zainstalowane” lub instalowało coś nowego, co nie pomogło.
Naprawiono za pomocą
źródło
W Scientific Linux 6 (podobnie jak CentOS 6-- SL jest teraz zastępowany przez CentOS, AIUI), musiałem użyć tego,
/usr/sbin/prelink -av -mR
co zostało zasugerowane na https://stelfox.net/blog/2014/08/dependency-prelink-issues/Dopóki tego nie zrobiłem, pojawiał się błąd cc1,
gcc: error trying to exec 'cc1': execvp: No such file or directory
kiedy próbowałem kompilować, a gcc --version zgłosił 4.2.2 zamiast 4.4.7, mimo że wersja została zgłoszona przez yum.Może być powiązany lub nie, ale w systemie zabrakło miejsca na / var
źródło
Jest w tym pakiecie (Ubuntu 19.04):
źródło
g++
jest w porządku. Lub lepiej,build-essential
pobiera też niektóre biblioteki.W moim rzadkim przypadku to
color wrapper
kto zepsułgcc
. Rozwiązany przez wyłączeniecw
wykluczenia jego katalogu/usr/libexec/cw
zePATH
zmiennej środowiskowej.źródło
Dlaczego to się dzieje? Kiedy instalujesz nową kopię Linuksa, prepakowany jest kompilator gcc. Zawiera tylko pliki i pliki binarne, które są używane do uruchamiania Linuksa (aby zaoszczędzić miejsce i czas, oczywiście).
Jak rozwiązać ten błąd? Wszystko, czego potrzebujesz, to zaktualizować pakiety za pośrednictwem menedżera pakietów i ponownie zainstalować pakiety niezbędne do kompilacji. Polecenia mogą być różne w różnych jądrach.
źródło