configure: error: компилятор C не может создавать исполняемые файлы

Я пытался установить 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

Я не уверен, почему эта ошибка выдается. Я не смог найти удовлетворительного ответа на этот вопрос на форуме. Может кто-нибудь, пожалуйста, помогите. Благодаря

16
задан 13 November 2013 в 11:04

3 ответа

Похоже, что у вас есть нестандартная версия компоновщика 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-отделом.

12
ответ дан 13 November 2013 в 11:04

Попробуйте обновить систему, переустановите пакеты, предоставляющие ld и компилятор ( gcc ). Запустите prelink -au && depmod -a . Затем перезагрузитесь.

Возможно, вам придется отключить или перенастроить предварительную ссылку в / etc / systemctl или там, где это установлено в ваших дистрибутивах.

0
ответ дан 13 November 2013 в 11:04

В отличие от сложных причин, приведенных выше, в моем случаеэто был просто случай отсутствия установленного g ++ . Как ни странно, сообщение об ошибке было таким же, как описано в OP, т.е.

configure: error: C compiler cannot create executables

В любом случае, я решил это, установив g ++:

sudo apt-get install g++
10
ответ дан 13 November 2013 в 11:04

Другие вопросы по тегам:

Похожие вопросы: