Я успешно использую gcc на Linux Mint 12. Теперь я получаю сообщение об ошибке. Я недавно делал несколько сборок .so и не так давно установил Clang, но успешно скомпилировал после обоих этих событий, поэтому не уверен, что изменилось. Я использовал диспетчер программного обеспечения с графическим интерфейсом, чтобы удалить, а затем снова установить 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
Ответы:
Объяснение
В сообщении об ошибке говорилось, что зависимость времени сборки (в данном случае она есть
cc1
) не найдена, поэтому все, что нам нужно - установить соответствующий пакет в систему (используя диспетчер пакетов // из источников // другим способом)Что есть
cc1
:взяты из этого ответа по Алан Шутко .
Решение для: Ubuntu / Linux Mint
Решение для: среды Docker-alpine
Если вы находитесь в среде docker-alpine, установите пакет build-base , добавив его в свой
Dockerfile
:Лучшее название пакета предоставил Пабло Кастеллано . Подробнее здесь .
Если вам нужно больше пакетов для сборки, рассмотрите возможность добавления пакета alpine-sdk :
Взято с github
Решение для: CentOS / Fedora
Этот ответ содержит инструкции для CentOS и Fedora Linux.
Решение для: Amazon Linux
Взятые из этого комментария по CoderChris
Вы также можете попробовать установить пропущенные зависимости с помощью этого ( хотя, как говорят, это не решает проблему ):
Взято из этого ответа
источник
На CentOS или Fedora
источник
В debian / ubuntu я исправил эту проблему, переустановив
build-essential
:источник
Это связано с тем, что
gcc
вызывает множество других исполняемых файлов для завершения обработки ввода, а ихcc1
нет во включенном пути.По типу оболочки
whereis cc1
. Если онcc1
будет найден, лучше создать мягкую ссылку в каталогеgcc
; в противном случаеcc1
не устанавливается, и вам необходимо установить gcc-c ++ с помощью диспетчера пакетов.источник
ln -s cc cc1
Поскольку это первый результат в Google, я просто хотел задокументировать свой опыт работы с Amazon Linux. Установка
gcc-c++.noarch
устранила проблему:sudo yum install gcc-c++.noarch
Некоторые люди также сообщили об этой альтернативе как о решении:
sudo yum install gcc72-c++
источник
.noarch
уже установлена.Сегодня я столкнулся с аналогичной проблемой - коллега не мог собрать свое программное обеспечение, но я мог его собрать. Когда побежал,
gcc
найти не смогcc1
.Его путь к исполняемому файлу выглядел разумным, но тот факт, что я не мог легко воспроизвести сбой, предполагал, что причина в его среде.
В конце концов мы нашли
GCC_EXEC_PREFIX
в его среде определение, которое было виновником и вводилоgcc
в заблуждение при поискеcc1
. Это было частью его сценариев запуска оболочки и предназначалось для обхода ограничения в системе SPARC / Solaris, которая больше не используется. Проблема была решена, если не задавать эту переменную среды.http://gcc.gnu.org/onlinedocs/gcc/Environment-Variables.html
источник
Я исправил эту проблему, явно установив g ++:
Проблема возникла в Ubuntu 12.04 при установке pandas. (Спасибо, perilbrain.)
источник
yum install gcc-c++
сделал исправление.источник
Убедитесь, что ваш
GCC_EXEC_PREFIX(env)
не экспортируется, а вашPATH
экспортируется в нужную цепочку инструментов.источник
Я испытал это вскоре после компиляции и установки нового блестящего GCC - версии 8.1 - на RHEL 7. В конце концов, это оказалось проблемой с разрешениями; моя корневая маска была виновата. В конце концов я обнаружил, что
cc1
прячусь в/usr/local/libexec
:Однако разрешения для ведущих туда каталогов не позволяли моей стандартной учетной записи пользователя:
Быстрая рекурсия
chmod
для добавления разрешений на чтение / выполнение для всего мира исправила это сразу:А теперь
gcc
могу найти,cc1
когда прошу компилировать что-нибудь!источник
Это также может быть отображаемое сообщение об ошибке, если вы пытаетесь запустить 32-разрядные двоичные файлы gcc в 64-разрядной ОС и при этом отсутствует 32-разрядная glibc. Согласно этому файлу readme : «Для 64-битной системы для запуска инструментов требуются 32-битные libc и libncurses.». В этом случае нет проблем с путем, и cc1 действительно найден, но сообщается как отсутствующий как 32-битный glibc отсутствует.
источник
Что мне помогло, так это использовать
llvm-gcc
вместо этого:источник
Просто чтобы задокументировать мою проблему с этой проблемой, хотя это просто кажется конкретным примером других ответов; как относительный новичок, я чувствую, что это может помочь другим.
Решение:
Я добавил / usr / bin в начало PATH для одного сеанса,
PATH='/usr/path/:$PATH'
и все начало работать нормально.Я использовал gedit для постоянного обновления PATH, убедившись, что он не сломает мои обычные инструменты.
Пояснение:
У меня на Ubuntu 14.04LTS установлено несколько наборов инструментов, и я использую только пару на регулярной основе. Когда я попытался использовать gcc из командной строки, у меня возникла проблема, описанная OP. '/ usr / bin' находится в PATH, но находится за другими местоположениями инструментальной цепочки. Оказывается, cc1 для этих других наборов инструментов несовместим с gcc.
источник
Просто чтобы дополнить ответ @maxkoryukov относительно Alpine.
Эквивалент Debian
build-essential
в Alpine - этоbuild-base
. Фактически, вышесказанноеalpine-sdk
зависит отbuild-base
.источник
Вы можете исправить это, запустив следующее: В Fedora:
источник
Я столкнулся с этой проблемой при достаточно новой установке Fedora 27. Я попробовал все другие предложения или их эквиваленты; установка различных пакетов либо говорила «уже установлена», либо устанавливала что-то новое, что не помогло.
Исправлено с помощью
источник
В Scientific Linux 6 (аналогично CentOS 6 - SL теперь заменен на CentOS, AIUI) мне пришлось использовать то,
/usr/sbin/prelink -av -mR
что я нашел предложенным на https://stelfox.net/blog/2014/08/dependency-prelink-issues/Пока я этого не сделал, у меня была ошибка cc1
gcc: error trying to exec 'cc1': execvp: No such file or directory
при попытке скомпилировать, и gcc --version сообщал о 4.2.2 вместо 4.4.7, несмотря на то, что эта версия сообщается yum.Это может быть связано или нет, но в системе не хватило места на / var
источник
Это в этом пакете (Ubuntu 19.04):
источник
g++
нормально. Или, лучше,build-essential
втягивает и некоторые библиотеки.В моем редком случае
color wrapper
баловал именно тотgcc
. Решается отключениемcw
исключения его каталога/usr/libexec/cw
изPATH
переменной окружения.источник
Почему это происходит? Когда вы устанавливаете новую копию linux, компилятор gcc поставляется с ней заранее. Он содержит только файлы и двоичные файлы, которые используются для запуска Linux (очевидно, для экономии места и времени).
Как решить эту ошибку? Все, что вам нужно, это обновить свои пакеты через диспетчер пакетов и переустановить пакеты, необходимые для сборки. Команды могут отличаться на разных ядрах.
источник