Как восстановить системный компилятор gcc на centos 6 - PullRequest
0 голосов
/ 12 сентября 2018

Я использую Centos 6 на кластере. Я установил последнюю версию gcc-8.2.0. и сделал ссылку "ln -sf /usr/bin/gcc-8.2 gcc". Я сделал то же самое для g ++ и gfortran. Я хотел переустановить gcc-8.2.0 и пошел дальше

make clean

в каталоге gcc-8.2. Когда я пытаюсь

./configure

Я понял, что компилятор C не может создавать исполняемые файлы Ссылки, которые я сделал, не работают. Система gcc-4.4.7 не найдена

which gcc

не дает GCC

sudo yum install gcc gcc-c++

дает gcc уже установлен. Я попытался установить RPM, который не удается из-за зависимостей. У меня установлены компиляторы pg в / opt / pgi Когда я настраиваю с

CC=/path to/pgi/bin/pgcc FC=/path to/pgi/bin/pgfortran ./configure

Я все еще получаю, что компилятор C не может создавать исполняемые файлы Я попробовал следующую программу C ++

#include <iostream>
using namespace std;
int main() {
cout << "Hello world!" << endl;
return 0;
}

С помощью команды

/opt/pgi/linux_86_64/12.08/bin/pgcpp hello.cpp -o hello

Выдает ошибку компиляции, которая не найдена. На другом Linux-ПК с рабочим gcc программа работает с командой

g++ hello.cpp -o hello

Буду признателен за помощь в поиске systemgcc или использовании компиляторов pg для компиляции gcc, если это возможно

Я признаю, что это большой беспорядок, который потребует переустановки ОС и перенастройки. Но тогда я сделал

sudo yum install compat-gcc-34

Теперь у меня есть gcc34, и настройка gcc-8.2 проходит без "компилятор c не может создавать исполняемые файлы". (Обратите внимание, что ./configure, упомянутый в предыдущем посте, на самом деле

../gcc_8_2_release/configure

внутри "gcc_8_2_release_build", поэтому gcc не создавался в исходном каталоге. Теперь у меня проблема с make, которая требует g ++ и выдаёт ошибку

uint_t(64) or int_t(64) not found.

Спасибо всем, кто прошел этот пост, за ваше терпение. Любая помощь будет оценена.

Вот как я вышел из этого беспорядка. С помощью следующих двух команд

sudo yum install compat-gcc-34-c++
sudo yum install compat-gcc-34-g77

Мне удалось установить более старую версию gcc, c ++ и g77. Тогда мне удалось собрать gcc-8.2. Теперь у меня есть функциональная система с последней версией gcc, да, возможно, потребуется переустановка / перенастройка, но она полностью функциональна. Я многому научился и очень ценю комментарии и рекомендации @Basile. Однако в какой-то момент он был довольно негативным и обескураживающим. Но благодаря моей вере и настойчивости и, что еще важнее, просмотру знаний, которыми поделились другие, я смог восстановить то, что, как я начал убеждать, было проигрышным делом. Спасибо всем.

Ответы [ 2 ]

0 голосов
/ 20 сентября 2018

Эта проблема была решена с помощью следующих команд

sudo yum install compat-gcc-34-c++
sudo yum install compat-gcc-34-g77

После установки этой более старой версии gcc была собрана последняя версия, gcc-8.2, и система больше не работает ужасно. Это очень полезно для здоровья.

0 голосов
/ 12 сентября 2018

Это скорее вопрос системного администратора, чем вопроса программирования.

Мои рекомендации:

  • не связывайтесь с /usr/bin/.Оставьте свой менеджер пакетов yum, чтобы заполнить его, и никогда не добавляйте ничего внутри него без yum;поэтому удалите вручную любые ссылки, которые вы сделали там (по ошибке)

  • переустановите старую систему gcc 4.4 и g++ 4.4 (используя yum)

  • восстановить GCC 8 с нуля из его исходного кода.Настройте его с помощью --program-suffix=-8 (но без --prefix или --prefix=$HOME/soft/, если у вас нет root-доступа).Таким образом, он установит /usr/local/bin/gcc-8 и /usr/local/bin/g++-8 и т. Д. (Или, если вы дали --prefix=$HOME/soft/, $HOME/soft/bin/gcc-8 и т. Д.)

  • создать $HOME/bin/ если у вас его еще нет

  • убедитесь, что у вас есть $HOME/bin/ рано в вашем $PATH (до /usr/bin/)

  • добавить символическую ссылку ln -sv /usr/local/bin/gcc-8 $HOME/bin/gcc и аналогично для g++ и т. Д.

Затем при вводе gccвы получаете эту символическую ссылку на /usr/local/bin/gcc-8 и т. д.

Если вы не можете писать в /usr/local/ (например, потому что у вас нет прав root ...), вы можете передать --prefix=$HOME/soft/ в GCC 8 .../configure затем замените /usr/local/ выше на $HOME/soft/

Если вы являетесь системным администратором и можете писать в /usr/local/ и вам нужно настроить параметры для многих пользователей: добавьте символическую ссылку ln -s /usr/local/bin/gcc-8 /usr/local/bin/gcc и т. д. и спросите своих пользователейчтобы поставить /usr/local/bin/ в их $PATH до /usr/bin/

Кстати, обратите внимание, что явно задокументировано, что GCC 8 (или другие) должны бытьвстроенный вне его исходного дерева: в Установке GCC вы можете прочитать:

Во-первых, мы настоятельно рекомендуем встроить GCC в отдельный каталог из источников, который не находится в дереве исходных текстов.

(«настоятельно рекомендую» следует рассматривать как вежливый способ сказать «вы обязательно должны»)

Так что ваш ./configure был еще одной ошибкой.

Может случиться, что васиспортил вашу систему более серьезно, чем вы думали (и, возможно, вам нужно переустановить или позвонить в службу поддержки Redhat).

PS.Я не знаю Redhat (использовал его только в прошлом веке).Мой любимый дистрибутив - это Debian / тестируемый или Debian / нестабильный (и мои компьютеры являются настольными, а не кластерными).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...