Tenho usado com sucesso o gcc no Linux Mint 12. Agora estou recebendo um erro. Recentemente, tenho feito alguns builds .so e instalei o Clang há não muito tempo, mas compilei com êxito desde ambos os eventos, portanto, não tenho certeza do que mudou. Usei o GUI Software Manager para remover e instalar o gcc novamente, mas os resultados são os mesmos:
~/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
Respostas:
Explicação
A mensagem de erro nos disse que a dependência em tempo de construção (neste caso, é
cc1
) não foi encontrada, então tudo o que precisamos - instale o pacote apropriado no sistema (usando o gerenciador de pacotes // de fontes // de outra maneira)O que é
cc1
:retirado desta resposta de Alan Shutko .
Solução para: Ubuntu / Linux Mint
Solução para: ambiente Docker-alpine
Se você estiver no ambiente docker-alpine , instale o pacote build-base adicionando-o a
Dockerfile
:Melhor nome do pacote fornecido por Pablo Castellano . Mais detalhes aqui .
Se você precisar de mais pacotes para fins de construção, considere adicionar o pacote alpine-sdk :
Retirado do github
Solução para: CentOS / Fedora
Esta resposta contém instruções para CentOS e Fedora Linux
Solução para: Amazon Linux
Retirado deste comentário por CoderChris
Você também pode tentar instalar dependências perdidas com isso ( embora, diga-se que não resolve o problema ):
Retirado desta resposta
fonte
No CentOS ou Fedora
fonte
No debian / ubuntu, resolvi esse problema reinstalando
build-essential
:fonte
Isso ocorre porque
gcc
chama muitos outros executáveis para concluir o processamento da entrada ecc1
não está no caminho incluído.No tipo de concha
whereis cc1
. Secc1
for encontrado, é melhor ir em frente e criar um softlink no diretório degcc
; caso contrário,cc1
não está instalado e você deve instalar o gcc-c ++ usando o gerenciador de pacotes.fonte
ln -s cc cc1
Como esse é o primeiro resultado no Google, eu só queria documentar minha experiência com o Amazon Linux. A instalação
gcc-c++.noarch
corrigiu o problema:sudo yum install gcc-c++.noarch
Algumas pessoas também relataram esta alternativa como solução:
sudo yum install gcc72-c++
fonte
.noarch
já está instalado.Encontrei um problema semelhante hoje - um colega de trabalho não conseguiu construir seu software, mas eu consegui. Quando ele correu
gcc
, não conseguiu encontrarcc1
.Seu caminho executável parecia razoável, mas o fato de eu não conseguir replicar facilmente a falha sugeriu algo em seu ambiente como a causa.
Por fim, descobrimos
GCC_EXEC_PREFIX
definido em seu ambiente quem era o culpado e foi enganosogcc
na buscacc1
. Isso fazia parte de seus scripts de inicialização do shell e tinha como objetivo solucionar uma limitação em um sistema SPARC / Solaris que não está mais em uso. O problema foi resolvido ao não definir esta variável de ambiente.http://gcc.gnu.org/onlinedocs/gcc/Environment-Variables.html
fonte
Corrigi esse problema instalando explicitamente o g ++:
O problema foi encontrado no Ubuntu 12.04 durante a instalação do pandas. (Obrigado perilbrain.)
fonte
yum install gcc-c++
fez a correção.fonte
Certifique-se de que
GCC_EXEC_PREFIX(env)
não seja exportado e quePATH
seja exportado para a cadeia de ferramentas correta.fonte
Eu experimentei isso logo após compilar e instalar um novo GCC - versão 8.1 - no RHEL 7. No final, acabou sendo um problema de permissões; meu umask raiz foi o culpado. Acabei por me
cc1
esconder em/usr/local/libexec
:No entanto, as permissões nos diretórios que levam até lá não permitiam minha conta de usuário padrão:
Um recursivo rápido
chmod
para adicionar permissões globais de leitura / execução corrigiu o problema:E agora
gcc
posso encontrarcc1
quando eu pedir para compilar algo!fonte
Essa também pode ser a mensagem de erro exibida se você tentar executar binários gcc de 32 bits em um sistema operacional de 64 bits e sem glibc de 32 bits. De acordo com este leia - me : "Para sistemas de 64 bits, libc e libncurses de 32 bits são necessários para executar as ferramentas.". Nesse caso, não há nenhum problema com o caminho e cc1 foi realmente encontrado, mas relatado como ausente como sem glibc de 32 bits.
fonte
O que me ajudou foi usar em
llvm-gcc
vez disso:fonte
Apenas para documentar meu problema com esse problema, mesmo que pareça ser um exemplo específico de outras respostas; como um novato em relação, sinto que isso pode ajudar outras pessoas.
Solução:
Eu adicionei '/ usr / bin' ao início do PATH para uma única sessão usando
PATH='/usr/path/:$PATH'
e tudo começou a funcionar bem.Usei o gedit para atualizar o PATH permanentemente, depois de garantir que não quebraria meu conjunto de ferramentas regular.
Explicação:
Tenho vários conjuntos de ferramentas instalados no Ubuntu 14.04LTS e uso apenas alguns regularmente. Quando tentei usar o gcc na linha de comando, recebi o problema descrito pelo OP. '/ usr / bin' está no PATH, mas está atrás dos outros locais do conjunto de ferramentas. Acontece que o cc1 para aqueles outros conjuntos de ferramentas é incompatível com o gcc.
fonte
Apenas para complementar a resposta de @maxkoryukov em relação à Alpine.
O equivalente ao Debian
build-essential
em Alpine ébuild-base
. Na verdade, o acima mencionadoalpine-sdk
dependebuild-base
.fonte
Você pode corrigir isso executando o seguinte: No Fedora:
fonte
Eu experimentei esse problema em uma instalação razoavelmente nova do Fedora 27. Tentei todas as outras sugestões ou seus equivalentes; instalar os vários pacotes disse "já instalado" ou instalou algo novo que não ajudou.
Corrigido com
fonte
No Scientific Linux 6 (semelhante ao CentOS 6-- SL agora foi substituído pelo CentOS, AIUI), tive que usar o
/usr/sbin/prelink -av -mR
que achei sugerido em https://stelfox.net/blog/2014/08/dependency-prelink-issues/Até fazer isso, eu recebia um erro cc1
gcc: error trying to exec 'cc1': execvp: No such file or directory
quando tentei compilar, e gcc --version relatou 4.2.2 em vez de 4.4.7, apesar dessa versão ser relatada pelo yum.Pode ou não estar relacionado, mas o sistema ficou sem espaço em / var
fonte
Está neste pacote (Ubuntu 19.04):
fonte
g++
está bem. Ou melhor,build-essential
puxa algumas bibliotecas também.No meu caso raro, foi
color wrapper
quem estragougcc
. Resolvido desativando acw
exclusão de seu diretório/usr/libexec/cw
daPATH
variável ambiental.fonte
Por que isso acontece? Quando você instala uma nova cópia do Linux, o compilador gcc vem pré-embalado com ele. Ele contém apenas os arquivos e binários que são usados para executar o linux (para economizar espaço e tempo, obviamente).
Como resolver esse erro? Tudo que você precisa é atualizar seus pacotes por meio do gerenciador de pacotes e reinstalar os pacotes essenciais para compilar. Os comandos podem ser diferentes em kernels diferentes.
fonte