--prefix=/usr/bin/gcc-8.1
означает, что все , являющееся частью установки, будет помещено в каталог /usr/bin/gcc-8.1/
. 1
Это означает, что ваш фактический двоичный файл GCC, вероятно, находится в /usr/bin/gcc-8.1/bin/gcc
(или в некотором исполняемом файле с аналогичным именем, возможно, он на самом деле называется gcc-8
или gcc-8.1
).
Когда вы устанавливаете двоичный файл GCC на /usr/bin/gcc-8.1
, используя update-alternatives
, вы устанавливаете символическую ссылку, которая обычно используется для разрешения того, какой двоичный файл GCC вы хотите поместить в каталог, что приводит к ошибке, которую вы сейчас получаете.
Чтобы устранить эту проблему, выполните следующие действия:
Удалить неправильную запись в update-alternatives
:
update-alternatives --remove gcc /usr/bin/gcc-8.1
Добавьте правильную запись. 2
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8.1/bin/gcc 60 \
--slave /usr/bin/g++ g++ /usr/bin/gcc-8.1/bin/g++
1 Ну, в основном, в любом случае. Обычные префиксы включают /
(двоичные файлы в /bin/
), /usr/
(двоичные файлы в /usr/bin/
) и /usr/local/
(двоичные файлы в /usr/local/bin/
)
2 Я предполагаю, что вы хотите оставить GCC установленным в этом неудобном месте. Перекомпиляция и переустановка с --prefix=/opt/gcc-8.1
или чем-то подобным, вероятно, будет лучше, просто измените путь по мере необходимости