Estaba tratando de instalar rvm usando \curl -L https://get.rvm.io | bash -s stable --ruby --autolibs=enable --auto-dotfiles
. Funcionó bien hasta que recibí un error de configuración:
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.
Los siguientes son los contenidos del archivo 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
Luego probé un programa C "hello world" y obtuve el siguiente error en la compilación:
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
No estoy seguro de por qué se produce este error. No pude encontrar una respuesta satisfactoria a esto en el foro. ¿Podría alguien ayudarme? Gracias
Respuestas:
Parece que tiene una versión no estándar del enlazador GNU
ld
en su/usr/local/bin
directorio (posiblemente instalado desde la fuente), y su variable de entorno PATH está configurada de tal manera que el sistema encuentre esa versión antes que la versión 'sistema' (que debería estar en/usr/bin/ld
) . Si desea compilar utilizando las versiones estándar del sistema de las herramientas de compilación , deberá ajustar la variable de entorno PATH para que busque/usr/bin
antes/usr/local/bin
Si desea arreglar permanentemente su variable PATH, deberá averiguar dónde la configuró originalmente, probablemente en su archivo ~ / .bashrc, pero es posible que haya otras ubicaciones. Alternativamente, si solo necesita una solución temporal para esta compilación, puede intentar
en la terminal antes de ejecutar el
./configure
Sin embargo, a veces hay buenas razones por las que usted (o el administrador de su sistema) puede querer que use versiones de herramientas
/usr/local
; si es así, deberá averiguar por quéld
aparentemente no es compatible con el resto de la cadena de compilación y corregir si es un sistema escolar o laboral, comuníquese con el administrador de su sistema o el departamento de TI.fuente
/usr/local/bin
está por delante de/usr/bin
enPATH
por una buena razón: no hay razón para tener un programa instalado localmente si la versión de la distribución tiene prioridad. Buen trabajo para detectar el problema, pero la resolución recomendada no es cambiar la RUTA, sino eliminarla o repararla/usr/local/bin/ld
./usr/local
which ld
solo devuelve/usr/bin/ld
...Contrariamente a las complicadas razones dadas anteriormente, en mi caso, fue simplemente un caso de no haber
g++
instalado. Curiosamente, el mensaje de error fue el mismo descrito por el OP, es decirDe todos modos, resolví esto instalando g ++:
fuente
Intente actualizar el sistema, reinstale los paquetes que proporcionan ld y el compilador ( gcc ). Ejecutar
prelink -au && depmod -a
. Luego reiniciar.Es posible que deba deshabilitar o reconfigurar el preenlace en
/etc/systemctl
o donde su distribución lo configure.fuente