Перейти к содержимому

Gcc 4 как установить на fedora 31

  • автор:

How to install an older version of gcc on Fedora

I tried to install CUDA on Fedora 31 but got stuck at the last step because CUDA officially supports Fedora 29 (gcc 8.2) while the version shipped with Fedora 31 is 9.2, I then installed Pytorch with CUDA support and without much surprise, CUDA support is not present:

>>> import torch >>> device = torch.device("cuda" if torch.cuda.is_available() else "cpu") >>> device device(type='cpu') 

I then tried to search for gcc, g++ and gfortran on pkgs, but got stuck in a dependency hell, something like:

sudo dnf install gcc-8.2.1-2.fc29.x86_64.rpm gcc-gfortran-8.2.1-2.fc29.x86_64.rpm gcc-c++-8.2.1-2.fc29.x86_64.rpm -y Error: Problem 1: conflicting requests - nothing provides cpp = 8.2.1-2.fc29 needed by gcc-8.2.1-2.fc29.x86_64 - nothing provides libgomp = 8.2.1-2.fc29 needed by gcc-8.2.1-2.fc29.x86_64 Problem 2: conflicting requests - nothing provides libgfortran = 8.2.1-2.fc29 needed by gcc-gfortran-8.2.1-2.fc29.x86_64 - nothing provides libquadmath = 8.2.1-2.fc29 needed by gcc-gfortran-8.2.1-2.fc29.x86_64 - nothing provides libquadmath-devel = 8.2.1-2.fc29 needed by gcc-gfortran-8.2.1-2.fc29.x86_64 Problem 3: conflicting requests - nothing provides libstdc++ = 8.2.1-2.fc29 needed by gcc-c++-8.2.1-2.fc29.x86_64 - nothing provides libstdc++-devel = 8.2.1-2.fc29 needed by gcc-c++-8.2.1-2.fc29.x86_64 

I found a bunch helpful links on this post but unfortunately the last version is gcc 7.3 My last option is building from source, but apart from that is there any other option? I’m not sure my computer can handle the compilation in a decent amount of time.

Собираем gcc из исходников

Набор компиляторов gcc очень бурно развивается и там часто появляются какие-то новые фичи(например, из нового стандарта C++), которые хочется попробовать уже сегодня, а релиза ждать не хочется. Здесь выход один — собирать компилятор из исходников. Здесь я поделюсь своим опытом в этом.

1. Для начала сольем исходники с SVN’а:

svn checkout svn://gcc.gnu.org/svn/gcc/trunk gcc

Ждем. На моем соединении пришлось ждать около 30 минут.
2. Теперь делаем так:

cd gcc
./configure —enable-languages=c,c++,java

Немного поясню последнюю строчку: здесь мы указываем через запятаю список необходимых нам компиляторов. Я указал те, которые мне надо(кстати, в gcc появилась ветка с поддержкой go, руководство по ее сборке тут)
На моей Fedora 12 этот скрипт выдавал ругательства типа:

configure: error: Building GCC requires GMP 4.2+, MPFR 2.3.1+ and MPC 0.8.0+.

Не беда! Ставим необходимые пакеты:

yum install gmp mpfr mpc gmp-devel mpfr-devel libmpc libmpc-devel

Теперь конфигурационный скрипт должен выполниться нормально
3. Пытаемся выполнить make, но получаем нечто вроде этого:

gcc: gengtype-lex.c: No such file or directory
gcc: no input files

yum install flex

Если все равно не будет собираться, то можно попробовать выполнить make distclean, а потом заново выполнить скрипт configure.
4. Оставляем собираться на несколько часов, а потом набираем:

и используем свеженький gcc!

Как установить gcc 4.3 на Fedora 12?

Мне нужно скомпилировать пакет, который компилируется на gcc 4.3, а Fedora 12 поставляется с gcc 4.4, у которого есть изменения в поведении, из-за которых пакет не компилируется. В состав дистрибутива входит так же пакет compat-gcc-34, но это, наоборот, слишком старая версия.

Можно ли как-то установить именно версию 4.3?

Dims2000
18.08.10 18:13:47 MSD

vostrik ★★★☆
( 18.08.10 18:20:36 MSD )

если будете собирать из исходников

./configure —prefix=/usr/local/gcc-4.3
make
make install

все будет установлено в пределах указаного префикса,
перед сборкой софта старой версией можно будет сделать так

таким образом будут первыми подхватываться те бинарники , которые лежат там

Sylvia ★★★★★
( 18.08.10 18:20:46 MSD )
Ответ на: комментарий от Sylvia 18.08.10 18:20:46 MSD

таким образом будут первыми подхватываться те бинарники , которые лежат там

А установить те переменные, которые Вы советовали в параллельной теме — недостаточно?

Dims2000
( 18.08.10 18:23:21 MSD ) автор топика
Ответ на: комментарий от Dims2000 18.08.10 18:23:21 MSD

можно и те,
но нужно будет сделать симлинки

допустим в /usr/local/bin

ln -s /usr/local/gcc-4.3/bin/gcc /usr/local/bin/gcc-4.3
ln -s /usr/local/gcc-4.3/bin/g++ /usr/local/bin/g++-4.3

Sylvia ★★★★★
( 18.08.10 18:24:58 MSD )
Ответ на: комментарий от Sylvia 18.08.10 18:20:46 MSD

Уже скачиваю исходники вот так:

svn co svn://gcc.gnu.org/svn/gcc/tags/gcc_4_3_4_release gcc

Получается, у меня gcc-4.4 будет компилировать gcc-4.3? А оно точно сработает? :))

Dims2000
( 18.08.10 18:25:31 MSD ) автор топика
Ответ на: комментарий от Sylvia 18.08.10 18:24:58 MSD

> но нужно будет сделать симлинки

А alternatives делает ровно это? Или что-то другое?

Я сейчас вижу, что /usr/bin/gcc это у меня бинарник. Оно заменит его на симлинк?

Или лучше на заморачиваться с alternatives? Если считать, что потребность использовать 4.3 у меня будет возникать редко, то достаточно иметь Ваши симлинки и устанавливать переменные?

Dims2000
( 18.08.10 18:30:39 MSD ) автор топика
Ответ на: комментарий от Dims2000 18.08.10 18:25:31 MSD

Федора уже жжет , Debian Squeeze:
$wajig search gcc-4.
gcc-4.4 — The GNU C compiler
gcc-4.4-base — The GNU Compiler Collection (base package)
gcc-4.3 — The GNU C compiler
gcc-4.3-base — The GNU Compiler Collection (base package)
gcc-4.1-base — The GNU Compiler Collection (base package)
gcc-4.1-locales — The GNU C compiler (native language support files)
gcc-4.1-multilib — The GNU C compiler (multilib files)
gcc-4.1-source — Source of the GNU Compiler Collection
gcc-4.1 — The GNU C compiler
gcc-4.3-locales — The GNU C compiler (native language support files)
gcc-4.3-multilib — The GNU C compiler (multilib files)
gcc-4.3-source — Source of the GNU Compiler Collection
gcc-4.4-locales — The GNU C compiler (native language support files)
gcc-4.4-multilib — The GNU C compiler (multilib files)
gcc-4.4-source — Source of the GNU Compiler Collection
gpc-4.1-doc — Documentation for the GNU Pascal compiler (gpc)
llvm-gcc-4.2 — Low-Level Virtual Machine (LLVM), C/C++ front-end
gcc-4.1-doc — documentation for the GNU compilers (gcc, gobjc, g++)
gcc-4.2-doc — documentation for the GNU compilers (gcc, gobjc, g++)
gcc-4.3-doc — documentation for the GNU compilers (gcc, gobjc, g++)
gcc-4.4-doc — documentation for the GNU compilers (gcc, gobjc, g++)

elipse ★★★
( 18.08.10 18:31:33 MSD )
Led ★★★☆☆
( 18.08.10 18:37:44 MSD )
Ответ на: комментарий от Dims2000 18.08.10 18:25:31 MSD

я бы еще добавила к ./configure ключик —enable-languages=c,c++
чтобы не собирать лишнее

Sylvia ★★★★★
( 18.08.10 18:43:39 MSD )
Ответ на: комментарий от Dims2000 18.08.10 18:30:39 MSD

alternatives будет не в курсе про установленый вручную компилятор

для редких случаев можно не делать симлинки и просто переустановить PATH

Sylvia ★★★★★
( 18.08.10 18:44:56 MSD )
Ответ на: комментарий от Sylvia 18.08.10 18:43:39 MSD

> я бы еще добавила к ./configure ключик —enable-languages=c,c++

Поздно, уже компилится. Спасибо большое за подсказки, Вы отличный специалист. И форум у вас тут хороший 🙂

Dims2000
( 18.08.10 18:46:49 MSD ) автор топика
Ответ на: комментарий от Sylvia 18.08.10 18:43:39 MSD

> последний релиз 4.3.5

Видел, но мало ли что? Выбрал для симметрии 4-3-4 🙂 Всё равно может ещё даунгрейдить придётся.

Dims2000
( 18.08.10 18:48:28 MSD ) автор топика

Великий Патрик завещал не уподобляться красноглазым гентушницам с пятью версиями gcc в системе, а читать man diff и man patch до полного просветления, тем более, что в предыдущей теме уже написали что патчить.

dn2010 ★★★★★
( 18.08.10 18:59:12 MSD )
Ответ на: комментарий от dn2010 18.08.10 18:59:12 MSD

> что в предыдущей теме уже написали что патчить.

Так у меня ещё образовался пакет, который нужно патчить, но сильнее. Поэтому я подумал попробовать так.

Dims2000
( 18.08.10 19:05:00 MSD ) автор топика
Ответ на: комментарий от Dims2000 18.08.10 19:05:00 MSD

>Поэтому я подумал попробовать так.

GCC 4.4 для пользователя отличается только тем, что выявляет больше ошибок в коде. Поэтому нужно править ошибки в коде, а не пытаться на#$ать судьбу играясь версиями компилятора

Led ★★★☆☆
( 18.08.10 19:13:09 MSD )
Ответ на: комментарий от Dims2000 18.08.10 18:48:28 MSD

в пределах 1 ветки не приходится

Sylvia ★★★★★
( 18.08.10 19:13:19 MSD )

поставь 4.1.3 из пакетов для CentOS

annulen ★★★★★
( 18.08.10 19:14:09 MSD )
Ответ на: комментарий от Led 18.08.10 19:13:09 MSD

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

но лучше конечно пропатчить и патч в апстрим авторам отправить

Sylvia ★★★★★
( 18.08.10 19:30:48 MSD )
Ответ на: комментарий от Sylvia 18.08.10 19:30:48 MSD

>если код не его и он не собирается послать результирующий патч в апстрим, что конечно хорошо бы сделать, чтобы будущие поколения не наступали на те же грабли, то для себя однократно вполне можно и старой версией GCC собрать и забыть

Грабли с вероятностьб >50% вылезут в процессе использования собранной софтины

Led ★★★☆☆
( 18.08.10 19:38:42 MSD )
Ответ на: комментарий от Led 18.08.10 19:38:42 MSD

из-за разных версий GCC? бывает, не не часто, точнее почти не бывает , из примеров могу только firefox назвать, (не)работающий на библиотеках собраных разными версиями GCC

Sylvia ★★★★★
( 18.08.10 19:42:12 MSD )
Ответ на: комментарий от Sylvia 18.08.10 19:42:12 MSD

более вероятны конфликты при компоновке с libstdc++
и с слинкованными с нею другими библиотеками,

проявляется вот так:

undefined reference to `std::ctype::_M_widen_init()
const’
collect2: ld returned 1 exit status

Sylvia ★★★★★
( 18.08.10 19:47:20 MSD )
Ответ на: комментарий от Sylvia 18.08.10 19:42:12 MSD

>из-за разных версий GCC?

Нет. Из-за ошибок, на которые указывает 4.4 и игнорирует 4.3

Led ★★★☆☆
( 18.08.10 19:58:15 MSD )
Ответ на: комментарий от Led 18.08.10 19:58:15 MSD

это не ошибки , к тому же 4.3 их не просто так игнорирует, а потому что все было включено, для g2p это был заголовок, что сейчас Dims2000 не пишет (а зря), к тому же если вернуться к g2p, то авторы его тестировали с GCC 4.1 — 4.3, так что навряд ли там вылезут грабли именно из-за версии GCC

Sylvia ★★★★★
( 18.08.10 20:00:22 MSD )
Ответ на: комментарий от Sylvia 18.08.10 20:00:22 MSD

Если причина несобираемости ТОЛЬКО в невключенных хэдерах (что не факт), то этот трэд не стоит выеденого яйца — нужно просто добавить эти хэдеры и не морочить ж^Hголову ни себе, ни другим

Led ★★★☆☆
( 18.08.10 20:14:53 MSD )
Ответ на: комментарий от Led 18.08.10 19:13:09 MSD

> GCC 4.4 для пользователя отличается только тем, что выявляет больше ошибок в коде. Поэтому нужно править ошибки в коде, а не пытаться на#$ать судьбу играясь версиями компилятора

Я понимаю, что ты говоришь, но мне надо попробовать, чтоб на практике понять. Это же вопрос удобства. Как удобней запустить 2-мерную игрушку http://ru.wikipedia.org/wiki/Nebulus на современном компьютере? Поставить эмулятор ДОС? Или портировать её под Винды?

А если таких игрушек у тебя сто? Что, все портировать?

Dims2000
( 18.08.10 20:16:34 MSD ) автор топика
Ответ на: комментарий от Sylvia 18.08.10 18:44:56 MSD

У меня вопрос возник — а как оно при сборке найдёт свои инклюды, либы и так далее? Раньше надо было в переменных всё указывать, а теперь что, каждый компиллятор сам знает, где у него своё лежит?

Dims2000
( 18.08.10 20:18:53 MSD ) автор топика
Ответ на: комментарий от Sylvia 18.08.10 20:00:22 MSD

> для g2p это был заголовок, что сейчас Dims2000 не пишет (а зря)

Это тот же самый g2p, только предыдущей версии. Там ошибок у меня вылезло гораздо больше. И я подумал поэкспериментировать с разными версиями компилляторов. Хотя меня эта возможность сразу заинтересовала.

Dims2000
( 18.08.10 20:20:19 MSD ) автор топика
Ответ на: комментарий от Dims2000 18.08.10 20:16:34 MSD

>Как удобней запустить 2-мерную игрушку http://ru.wikipedia.org/wiki/Nebulus на современном компьютере? Поставить эмулятор ДОС? Или портировать её под Винды?

По-моему, вы ошиблись форумом. Портирование «под винды» на других форумах обсуждают

Led ★★★☆☆
( 18.08.10 20:22:25 MSD )
Ответ на: комментарий от Dims2000 18.08.10 20:18:53 MSD

>каждый компиллятор сам знает, где у него своё лежит?
да

Sylvia ★★★★★
( 18.08.10 20:34:38 MSD )
Ответ на: комментарий от Dims2000 18.08.10 20:16:34 MSD

> Как удобней запустить 2-мерную игрушку http://ru.wikipedia.org/wiki/Nebulus на современном компьютере?

ahonimous
( 18.08.10 20:36:48 MSD )
Ответ на: комментарий от Sylvia 18.08.10 20:00:22 MSD

Нифига со старой версией gcc тоже не выходит:

[root@testbed g2p]# python setup.py install —prefix /opt/g2p running install running build running build_py file sequitur_.py (for module sequitur_) not found creating build creating build/lib.linux-i686-2.6 copying Evaluation.py -> build/lib.linux-i686-2.6 copying Minimization.py -> build/lib.linux-i686-2.6 copying SequenceModel.py -> build/lib.linux-i686-2.6 copying SequiturTool.py -> build/lib.linux-i686-2.6 copying g2p.py -> build/lib.linux-i686-2.6 copying misc.py -> build/lib.linux-i686-2.6 copying sequitur.py -> build/lib.linux-i686-2.6 copying symbols.py -> build/lib.linux-i686-2.6 copying tool.py -> build/lib.linux-i686-2.6 file sequitur_.py (for module sequitur_) not found running build_ext building ‘_sequitur_’ extension swigging sequitur.i to sequitur_wrap.cpp swig -python -c++ -shadow -o sequitur_wrap.cpp sequitur.i creating build/temp.linux-i686-2.6 gcc-4.3.5 -fno-strict-aliasing -DNDEBUG -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector —param=ssp-buffer-size=4 -m32 -march=i686 -mtune=atom -fasynchronous-unwind-tables -D_GNU_SOURCE -fPIC -fwrapv -fPIC -DMULTIGRAM_SIZE=2 -I/usr/lib/python2.6/site-packages/numpy/core/include -I/usr/include/python2.6 -c sequitur_wrap.cpp -o build/temp.linux-i686-2.6/sequitur_wrap.o -fpermissive sequitur_wrap.cpp:1: error: bad value (atom) for -mtune= switch error: command ‘gcc-4.3.5’ failed with exit status 1

Непонятно два вопроса:

(1) правда, что, gcc-4.3.5 не понимает процессора atom? (2) откуда оно вообще взяло, что нужно оптимизировать для атома?

Packages for Linux and Unix

Error: Your browser was not able to display this page.

How to solve this problem
  • Install any modern browser (Chrome, Firefox, Safari, Edge, Opera, etc.);
  • Update the browser to the latest available version;
  • Disable extensions that block Cookies, JavaScript or Ads in your browser;
Connection
  • IP: 178.132.111.61
  • Date: 2024-01-29 00:21:33
  • User Agent: Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.2 Safari/537.36
  • Error code: 403

If you think it’s our fault, please email to lystor@gmail.com

This website uses cookies

We use cookies to personalise content and ads, to provide social media features and to analyse our traffic. We also share information about your use of our site with our social media, advertising and analytics partners who may combine it with other information that you’ve provided to them or that they’ve collected from your use of their services.

See Privacy Policy for details. I agree

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *