Попытка установки завершается ошибкой "configure: error: C++ compiler cannot create executables"

Есть несколько причин, и все они связаны с проблемой неправильной установки компилятора GCC.

  • Не был правильно обновлен компилятор при обновлении мажорной версии (4.1.x -> 4.3.x), выполните операции по правильному обновлению.
  • Был сменен CHOST в make.conf. Запомните, дети! Менять CHOST в make.conf просто так нельзя (есть исключения - с i486 на i686, но и этот процесс не тривиальный)! И уж тем более нельзя с помощью CHOST менять архитектуру с x86 на amd64.
  • Из системы был удален компилятор по умолчанию.

Вспомните, что сделали неправильного до ошибки, и следуйте по ссылкам.

(предложено KiberGus)
В случае удаления или порчи gcc попробуйте переключиться на другую версию (если она осталась в слоте), используя gcc-config, либо раздобыть в Tinderbox подходящий для вашей архитектуры бинарный пакет sys-devel/gcc, установить его и тем самым починить систему.

В случае удаления или порчи

В случае удаления или порчи gcc следует попробовать переключиться на другую версию, если она установленна в системе, используя gcc-config, либо раздобыть подходящий для вашей архитектуры бинарный пакет gcc, установить его и тем самым починить систему.

----------------

Стоит перенести в отдельный вопрос, но я не могу их создавать. Просьба модераторам либо удалить дальнейшее из моего поста, либо перенести в отдельную страницу подшивки.

Я удалил/сломал системный пакет и теперь gentoo не грузится, неужели переустанавливаться?

Нет, можно воспользоваться возможностью portage устанваливать пакеты не в корневую систему. Изначально эта функция предназначалась для сборки минималистичных версий gentoo и для кросскомпиляции, однако сгодится и в такой ситуации.

Грузимся с LiveCD или любого работоспособного линукса (с подходящей архитектурой, для починки x86_64 дистрибутива надо грузиться с x86_64 системы).
Качаем stage3 и распаковываем в сторонке, по желанию можете воспользоваться работающим дистрибутивом gentoo у товарища.
Монтируем корневую ФС убитого дистрибутива в каталог, расположенный внутри распакованного stage3, например в mnt/broken
Говорим emerge ставить пакеты внутрь сломанного дистрибутива:

ROOT="/mnt/broken" emerge -1 my_package_name

Пакет будет установален по всем правилам, с записью в world (если не была указана -1) и т.п.

Поправил этот вопрос и

Поправил этот вопрос и добавил новый: http://www.gentoo.ru/node/14486
Хотя, решение несколько неидеально и не учитывает некоторых моментов насчет работоспособности убитой системы (можно ли зачрутиться, сделать emerge etc), но лучше обсуждать уже там

Не грусти, товарищ! Всё хорошо, beautiful good!

"В случае удаления или порчи

"В случае удаления или порчи gcc следует попробовать переключиться на другую версию, если она установленна в системе, используя gcc-config..."
ламерский вопрос, но при gcc-config --help функции для переключения версий я не увидел...

gcc-config --list-profiles
[1] x86_64-pc-linux-gnu-4.3.4 *
[2] x86_64-pc-linux-gnu-4.4.3

как переключиться?

:)

# gcc-config ЦЫФРА!

Та что слева - типа нумерации.
И внимательно читать вывод.

Цитата: Запомните, дети!

Цитата:
Запомните, дети! Менять CHOST в make.conf просто так нельзя (есть исключения - с i486 на i686, но и этот процесс не тривиальный)! И уж тем более нельзя с помощью CHOST менять архитектуру с x86 на amd64.

Не потому ли ссылка на официальное руководство не прошла цензуры? :)

:wq
--
Live free or die

Вообще-то она там есть.

Вообще-то она там есть.

Текстовый редактор vi имеет два режима работы: в первом он пищит, а во втором — всё портит.

.

Ту же ошибку (configure: error: C++ compiler cannot create executables) можно получить и с вполне рабочим компиллятором на этапе установки, в случае указания некорректного значения CFLAGS в make.conf (на непривычном терминале вероятность события не равна нулю).

:wq
--
Live free or die

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".