Вы здесь

Попытка установки завершается ошибкой "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