Eu estava tentando instalar o rvm usando \curl -L https://get.rvm.io | bash -s stable --ruby --autolibs=enable --auto-dotfiles
. Funcionou bem até eu receber 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 log 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
Tentei um programa C "olá mundo" e obtive 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 gerado. Não encontrei uma resposta satisfatória para isso no fórum. Alguém por favor poderia ajudar. obrigado
Respostas:
Parece que você possui uma versão não padrão do vinculador GNU
ld
em seu/usr/local/bin
diretório (possivelmente instalado a partir da fonte), e sua variável de ambiente PATH é configurada de forma que o sistema encontre essa versão antes da versão 'system' (que deve estar em/usr/bin/ld
) . Se você deseja construir usando as versões padrão do sistema das ferramentas de construção , será necessário ajustar sua variável de ambiente PATH para que ela procure/usr/bin
antecipadamente/usr/local/bin
Se você deseja corrigir permanentemente sua variável PATH, precisará descobrir onde a definiu originalmente - provavelmente no 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
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 usar versões de ferramentas
/usr/local
- nesse caso, será necessário descobrir por que old
aparentemente não é compatível com o restante da cadeia de construção e corrigir it - se este for um sistema comercial ou escolar, entre em contato com o administrador do sistema ou o departamento de TI.fonte
/usr/local/bin
está à frente/usr/bin
noPATH
por uma boa razão: não há nenhum ponto em ter um programa instalado localmente se a versão da distribuição tem precedência. Bom trabalho para detectar o problema, mas a resolução recomendada não é alterar o CAMINHO, mas remover ou corrigir o problema/usr/local/bin/ld
./usr/local
which ld
apenas retornos/usr/bin/ld
….Ao contrário das complicadas razões dadas acima, no meu caso, era simplesmente um caso de não ter
g++
instalado. Estranhamente, a mensagem de erro era a mesma descrita pelo OP, ou seja,De qualquer forma, resolvi isso instalando o g ++:
fonte
Tente atualizar o sistema, reinstale os pacotes que fornecem ld e o compilador ( gcc ). Corra
prelink -au && depmod -a
. Então reinicie.Pode ser necessário desativar ou reconfigurar a pré-ligação
/etc/systemctl
ou onde quer que suas distros o configurem.fonte