Я запускаю 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
Это дает ошибку компиляции, что float.h не найден. На другом 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. Однако в какой-то момент он был довольно негативным и обескураживающим. Но благодаря моей вере и настойчивости и, что более важно, изучению знаний, которыми поделились другие, я смог восстановить то, что, как я начинал убеждать, было безнадежным делом. Спасибо всем.
В будущем; если вам нужен более новый компилятор, чем системный в системе RedHat / CentOS, подумайте об использовании пакетов "devtoolset". См. Fx Документация по продукту для Red Hat Developer Toolset 7. Devtoolset прекрасно решает проблему сохранения системного компилятора, а также предоставляет вам доступ к новым инструментам, которые совместимы со всем, что создано с помощью системного компилятора и полностью поддерживается RedHat.
Это скорее вопрос системного администратора, чем программирования.
Мои рекомендации:
не портите свой /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 вы можете прочитать:
First, we highly recommend that GCC be built into a separate directory from the sources which does not reside within the source tree.
("настоятельно рекомендую" следует рассматривать как вежливый способ сказать "вам абсолютно необходимо")
Значит, ваш ./configure
был очередной ошибкой.
Может случиться так, что ты испортил свою систему серьезнее, чем вы думали (и, возможно, вам нужно переустановить или вызвать в службу поддержки Redhat).
PS. Я не знаю Redhat (использовал его только в прошлом веке). Мой любимый дистрибутив - Debian / testing или Debian / unstable (и мои компьютеры - это настольные компьютеры, а не кластеры).
Спасибо @Basile за очень полезные подсказки. Моя проблема в том, что sudo yum install gcc gcc-C++ говорит, что gcc уже установлен, а sudo yum install gcc-4.4 говорит, что gcc-4.4 не существует
Да, нужно принудительно переустановитьgcc
. Я недостаточно знаком с yum
, чтобы помочь. Но как это сделать, нужно спросить на unix.stackexchange.com; если вы не знаете, как переустановитьgcc
, вы можете подумать о переустановке всей системы. Другими словами, вы сильно испортили свою систему.
Проблема решена, см. Правку в конце исходного сообщения.
Эта проблема была решена следующими командами
sudo yum install compat-gcc-34-c++
sudo yum install compat-gcc-34-g77
После установки этой старой версии gcc была собрана последняя версия gcc-8.2, и система больше не испортилась. Это очень здорово и подтянуто.
Это не лучшее решение. Вы могли бы удалить созданную вами глупую символическую ссылку, а затем вместо этого выполнить yum reinstall gcc gcc-c++
, чтобы восстановить исходный системный компилятор. Не заменяйте системный компилятор, см. Ответ Базиля.
Ваш умный ответ не работает, мое глупое решение работает! Нет глупой ссылки. Другой говорил, что моя система испортилась, что случилось? у меня может быть столько версий компилятора, сколько захочу. этот форум предназначен для обмена информацией, а не для определения того, кто глупее может перейти на другой форум.
Вы пробовали
yum reinstall gcc
?