configure: error: o compilador C não pode criar executáveis

12

Eu estava tentando instalar rvm usando \curl -L https://get.rvm.io | bash -s stable --ruby --autolibs=enable --auto-dotfiles . Funcionou bem até eu ter um erro de configuração:

Error running './configure --prefix=/home/nishant/.rvm/rubies/ruby-2.0.0-p247 --disable-install-doc --enable-shared',
please read /home/nishant/.rvm/log/1379591052_ruby-2.0.0-p247/configure.log
There has been an error while running configure. Halting the installation.

A seguir, o conteúdo do arquivo de registro mencionado:

[2013-09-19 17:15:58] ./configure
current path: /home/nishant/.rvm/src/ruby-2.0.0-p247
command(4): ./configure --prefix=/home/nishant/.rvm/rubies/ruby-2.0.0-p247 --disable-install-doc --enable-shared
checking build system type... i686-pc-linux-gnu
checking host system type... i686-pc-linux-gnu
checking target system type... i686-pc-linux-gnu
checking for gcc... gcc
checking whether the C compiler works... no
configure: error: in '/home/nishant/.rvm/src/ruby-2.0.0-p247':
configure: error: C compiler cannot create executables
See 'config.log' for more details

Eu então tentei um programa C "hello world" e recebi o seguinte erro na compilação:

nishant@nishant-Inspiron-1545:~$ gcc -g -o hello hello.c 
/usr/local/bin/ld: this linker was not configured to use sysroots
collect2: error: ld returned 1 exit status

Não sei por que esse erro foi lançado. Não consegui encontrar uma resposta satisfatória para isso no fórum. Alguém poderia por favor ajudar? Obrigado

    
por naka 19.09.2013 / 14:16

3 respostas

12

Parece que você tem uma versão não padronizada do link de link do GNU ld no seu diretório /usr/local/bin (possivelmente instalado a partir do código-fonte), e sua variável de ambiente PATH está configurada para que o sistema encontre essa versão antes do versão do sistema (que deve estar em /usr/bin/ld ). Se você deseja criar usando as versões padrão do sistema das ferramentas de criação , precisará ajustar a variável de ambiente PATH para que ele pesquise /usr/bin à frente de /usr/local/bin

Se você quiser consertar permanentemente sua variável PATH, você precisará descobrir onde você a definiu originalmente - provavelmente em seu arquivo ~ / .bashrc, mas outros locais são possíveis. Como alternativa, se você precisar apenas de uma correção temporária para essa compilação, tente

export PATH="/usr/bin:$PATH"

no terminal antes de executar o ./configure

No entanto, às vezes, há boas razões pelas quais você (ou o administrador do sistema) pode querer que você use versões de ferramentas de /usr/local . Em caso afirmativo, você precisará descobrir por que o ld aparentemente não é compatível com o resto da cadeia de construção e conserte-o - se este for um sistema de trabalho ou escola, entre em contato com o administrador do sistema ou departamento de TI.

    
por steeldriver 19.09.2013 / 14:35
8

Ao contrário das razões complicadas dadas acima, no meu caso, foi simplesmente um caso de não ter o g++ instalado. Estranhamente, a mensagem de erro foi a mesma descrita pelo OP, ou seja,

configure: error: C compiler cannot create executables

De qualquer forma, resolvi isso instalando o g ++:

sudo apt-get install g++
    
por rahul1210 24.11.2016 / 07:53
0

Tente atualizar o sistema, reinstalar os pacotes que fornecem ld e o compilador ( gcc ). Execute prelink -au && depmod -a . Então reinicie.

Você pode precisar desabilitar ou reconfigurar o prelink em /etc/systemctl ou onde quer que suas distros configurem isso.

    
por user599717 27.09.2016 / 03:08