Я пытался установить RVM с помощью \curl -L https://get.rvm.io | bash -s stable --ruby --autolibs=enable --auto-dotfiles
. Он работал нормально, пока я не получил ошибку конфигурации:
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.
Ниже приведено содержимое упомянутого файла журнала:
[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
Затем я попробовал программу на C "hello world" и получил следующую ошибку при компиляции:
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
Я не уверен, почему эта ошибка выдается. Я не смог найти удовлетворительного ответа на этот вопрос на форуме. Может кто-нибудь, пожалуйста, помогите. Благодарность
Ответы:
Похоже, что у вас есть нестандартная версия компоновщика GNU
ld
в вашем/usr/local/bin
каталоге (возможно, установленная из исходного кода), и ваша переменная среды PATH установлена так, что система находит эту версию перед «системной» версией (которая должна быть в/usr/bin/ld
) , Если вы хотите выполнить сборку с использованием стандартных системных версий инструментов сборки , вам необходимо настроить переменную среды PATH так, чтобы она выполняла поиск/usr/bin
раньше/usr/local/bin
Если вы хотите навсегда исправить вашу переменную PATH, вам необходимо выяснить, где вы ее изначально установили - возможно, в файле ~ / .bashrc, но возможны и другие местоположения. В качестве альтернативы, если вам просто нужно временное исправление для этой сборки, вы можете попробовать
в терминале перед выполнением
./configure
Однако иногда есть веские причины, по которым вы (или ваш системный администратор) хотите, чтобы вы использовали версии инструментов из
/usr/local
- если это так, то вам нужно будет выяснить, почемуld
они явно не совместимы с остальной цепочкой сборки, и исправить это. это - если это система работы или учебы, обратитесь к системному администратору или в отдел ИТ.источник
/usr/local/bin
впереди/usr/bin
вPATH
по уважительной причине: нет смысла в установке программы на местном уровне , если версия от распределения имеет приоритет. Хорошая работа по выявлению проблемы, но рекомендуемое решение состоит не в том, чтобы изменить PATH, а в том, чтобы либо удалить, либо исправить неисправный/usr/local/bin/ld
./usr/local
which ld
только возвращается/usr/bin/ld
...Вопреки сложным причинам, приведенным выше, в моем случае это был просто случай не
g++
установить. Как ни странно, сообщение об ошибке было таким же, как описано ОП, т.е.В любом случае, я решил это, установив g ++:
источник
Попробуйте обновить систему, переустановите пакеты, предоставляющие ld и компилятор ( gcc ). Беги
prelink -au && depmod -a
. Затем перезагрузите компьютер.Возможно, вам придется отключить или перенастроить предварительную ссылку
/etc/systemctl
или там, где это установлено в ваших дистрибутивах.источник