Ошибка Gcc: gcc: ошибка, пытающаяся выполнить exec ‘cc1’: execvp: Нет такого файла или каталога

Я успешно использовал gcc в Linux Mint 12. Теперь я получаю сообщение об ошибке. Я недавно делал некоторые .so сборки и установил Clang не так давно, но успешно скомпилирован с обоих этих событий, поэтому не уверен, что изменилось. Я использовал диспетчер программного обеспечения GUI для удаления и затем установки gcc снова, но результаты те же:

~/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 

    На debian / ubuntu я исправил эту проблему, переустановив build-essential :

     sudo apt-get update sudo apt-get install --reinstall build-essential 

    На CentOS или Fedora

     yum install gcc-c++ 

    Это связано с тем, что gcc вызывает много других исполняемых файлов для полной обработки ввода, а cc1 не входит в включенный путь.

    По типу оболочки: –

     whereis cc1 

    если cc1 найден, то лучше идти дальше и создавать softlink в каталоге gcc, иначе он подразумевает, что cc1 не установлен, и вам нужно установить gcc-c++ с помощью диспетчера пакетов.

    Сегодня я столкнулся с подобной проблемой – сотрудник не смог создать свое программное обеспечение, но я мог бы его построить. Когда он побежал gcc он не смог найти cc1 .

    Его исполняемый путь выглядел разумным, но тот факт, что я не мог легко воспроизвести неудачу, предложил что-то в его среде как причина.

    В конце концов мы обнаружили, что GCC_EXEC_PREFIX определен в его среде, которая была виновницей, и вводит в заблуждение gcc в поиске cc1 . Это было частью его сценариев запуска оболочки и предназначалось для ограничения ограничений в системе SPARC / Solaris, которая больше не используется. Проблема была решена, не устанавливая эту переменную среды.

    http://gcc.gnu.org/onlinedocs/gcc/Environment-Variables.html

    1. Объяснение

    Сообщение об ошибке сообщило вам, что зависимость времени сборки не найдена, поэтому все, что вам нужно – установите соответствующий пакет в свою систему (используя диспетчер пакетов, создайте из источников или по-другому)

    Что такое cc1 :

    cc1 – это внутренняя команда, которая берет предварительно обработанные C-языковые файлы и преобразует их в сборку. Это фактическая часть, которая компилирует C. Для C ++ существует cc1plus и другие внутренние команды для разных языков.

    взятый из этого ответа Алана Шутко .

    2. Решения

    Монетный двор Ubuntu / Linux

     sudo apt-get install --reinstall build-essential 

    Докер-альпийская среда

    Если вы находитесь в dockerе-альпийской среде, добавьте следующее:

     RUN apk add alpine-sdk 

    к Dockerfile .

    Взято из github

    Я исправил эту проблему, явно установив g ++:

     sudo apt-get install g++ 

    Проблема возникла на Ubuntu 12.04 при установке панд. (Спасибо, перилбрайн.)

    yum install gcc-c++ сделал исправление.

    Убедитесь, что ваш GCC_EXEC_PREFIX(env) не экспортирован и ваш PATH экспортирован в нужную цепочку инструментов.

    Amazon Linux: устранение проблемы GCC

    Поскольку это первый результат в Google, я просто хотел документировать свой опыт работы с Amazon Linux. Установка gcc-c++.noarch исправил проблему:

    sudo yum install gcc-c++.noarch

    Это также может быть отображаемое сообщение об ошибке, если вы пытаетесь запустить 32-разрядные двоичные файлы gcc в 64-разрядной ОС и пропустить 32-разрядный glibc. Согласно этому readme : «Для 64-битной системы для запуска инструментов требуются 32-разрядные libc и libncurses». В этом случае нет проблем с контуром, и cc1 действительно найден, но сообщается как отсутствует как 32-разрядный glibc.

    Что помогло мне было использовать llvm-gcc вместо:

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

    Просто чтобы зафиксировать мои проблемы с этой проблемой, хотя это, как представляется, является конкретным примером других ответов; как относительный новичок, я чувствую, что это может помочь другим.

    Решение:

    Я добавил ‘/ usr / bin’ в начало PATH для одного сеанса, используя PATH='/usr/path/:$PATH' и все начало работать нормально.

    Я использовал gedit для обновления PATH навсегда, после того, как он не нарушил мои обычные инструментальные цепочки.

    Объяснение:

    У меня есть несколько наборов инструментов, установленных на Ubuntu 14.04LTS, и я использую только пару на регулярной основе. Когда я попытался использовать gcc из командной строки, я получил проблему, описанную OP. ‘/ usr / bin’ находится в PATH, но он находится за другими местами привязки. Выключает cc1, поскольку другие инструментальные цепочки несовместимы с gcc.

    Вы можете исправить это, выполнив это: В Fedora:

     sudo dnf install redhat-rpm-config 

    Я испытал эту проблему на достаточно свежей установке Fedora 27. Я пробовал все другие предложения или их эквиваленты; устанавливая различные пакеты либо «уже установленные», либо устанавливая что-то новое, что не помогло.

    Исправлено:

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

    На Scientific Linux 6 (аналогично CentOS 6 – SL теперь заменена CentOS, AIUI), мне пришлось использовать /usr/sbin/prelink -av -mR который я нашел в https://stelfox.net/blog/ 2014/08 / зависимости Prelink-вопросы /

    До тех пор, пока я этого не сделал, я получил ошибку cc1 gcc: error trying to exec 'cc1': execvp: No such file or directory когда я пытался скомпилировать, а gcc -version сообщал 4.2.2 вместо 4.4.7, несмотря на это версия сообщается yum.

    Это может быть или не быть связано, но в системе не было места на / var

    Я испытал это вскоре после компиляции и установки блестящего нового GCC – версии 8.1 – на RHEL 7. В конце концов, это оказалось проблемой с разрешениями; мой корневой umask был виновником. В итоге я обнаружил, что cc1 скрывается в /usr/local/libexec :

     [[email protected] 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 

    Однако разрешения на каталоги, ведущие туда, не позволяли моей стандартной учетной записи пользователя:

     [[email protected] gdb-8.1]# ls -l /usr/local/libexec/ total 4 drwxr-x--- 3 root root 4096 Jul 2 13:53 gcc [[email protected] 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 [[email protected] 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 

    Быстрое рекурсивное chmod для добавления прав на чтение / выполнение в мире исправлено:

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

    И теперь gcc может найти cc1 когда я попрошу его скомпилировать что-нибудь!

    Давайте будем гением компьютера.