Я пытался установить 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 файле, но возможны и другие местоположения. Или же, если вам нужно только временное исправление для этой сборки, вы можете попробовать
export PATH="/usr/bin:$PATH"
в терминале перед выполнением . /configure
Однако иногда есть веские причины, по которым вы (или ваш системный администратор) можете захотеть использовать версии утилит из /usr/local
- если это так, то вам нужно будет выяснить, почему ld
очевидно несовместим с остальной частью цепочки сборки и исправить это - если это рабочая или школьная система, то свяжитесь с вашим системным администратором или IT-отделом.
Попробуйте обновить систему, переустановите пакеты, предоставляющие ld и компилятор ( gcc ). Запустите prelink -au && depmod -a
. Затем перезагрузитесь.
Возможно, вам придется отключить или перенастроить предварительную ссылку в / etc / systemctl
или там, где это установлено в ваших дистрибутивах.
В отличие от сложных причин, приведенных выше, в моем случаеэто был просто случай отсутствия установленного g ++
. Как ни странно, сообщение об ошибке было таким же, как описано в OP, т.е.
configure: error: C compiler cannot create executables
В любом случае, я решил это, установив g ++:
sudo apt-get install g++