LINUX.ORG.RU

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


0

0

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

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

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

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


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


export PATH=/usr/local/gcc-4.3/bin:$PATH

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

Sylvia ★★★★★
()
Ответ на: комментарий от Sylvia

Спасибо!

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

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

Dims2000
() автор топика
Ответ на: комментарий от Dims2000

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

допустим в /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 ★★★★★
()
Ответ на: комментарий от Sylvia

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

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

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

Dims2000
() автор топика
Ответ на: комментарий от Sylvia

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

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

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

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

Dims2000
() автор топика
Ответ на: комментарий от Dims2000

Федора уже жжет , 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 ★★★
()

Исправить «пакет»

Led ★★★☆☆
()
Ответ на: комментарий от Dims2000

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

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

Sylvia ★★★★★
()
Ответ на: комментарий от Sylvia

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

чтобы не собирать лишнее

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

Dims2000
() автор топика
Ответ на: комментарий от Sylvia

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

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

Dims2000
() автор топика

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

dn2010 ★★★★★
()
Ответ на: комментарий от dn2010

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

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

Dims2000
() автор топика
Ответ на: комментарий от Dims2000

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

Подумай ещё.

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

Led ★★★☆☆
()

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

annulen ★★★★★
()
Ответ на: комментарий от Led

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

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

Sylvia ★★★★★
()
Ответ на: комментарий от Sylvia

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

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

Led ★★★☆☆
()
Ответ на: комментарий от Led

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

Sylvia ★★★★★
()
Ответ на: комментарий от Sylvia

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

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

undefined reference to `std::ctype<char>::_M_widen_init()
const'
collect2: ld returned 1 exit status

Sylvia ★★★★★
()
Ответ на: комментарий от Led

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

Sylvia ★★★★★
()
Ответ на: комментарий от Sylvia

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

Led ★★★☆☆
()
Ответ на: комментарий от Led

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

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

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

Dims2000
() автор топика
Ответ на: комментарий от Sylvia

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

Dims2000
() автор топика
Ответ на: комментарий от Sylvia

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

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

Dims2000
() автор топика
Ответ на: комментарий от Dims2000

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

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

Led ★★★☆☆
()
Ответ на: комментарий от Dims2000

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

Sylvia ★★★★★
()
Ответ на: комментарий от Sylvia

Нифига со старой версией 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) откуда оно вообще взяло, что нужно оптимизировать для атома?

Dims2000
() автор топика
Ответ на: комментарий от Dims2000

поддержка атом есть только в 4.5.x
или дистрибутивных (RedHat например) бэкпортах 4.4.x

берет наверное из переменных среды,

set |grep FLAGS

переменные
CFLAGS
CXXFLAGS


можно перед сборкой задавать свои

export CFLAGS="-O2 -march=core2"
export CXXFLAGS=${CFLAGS}

например

Sylvia ★★★★★
()
Ответ на: комментарий от Sylvia

Но у меня не атом (насколько я понимаю):


[root@testbed source]# cat /proc/cpuinfo | grep model
model : 23
model name : Intel(R) Core(TM)2 Duo CPU E8400 @ 3.00GHz
model : 23
model name : Intel(R) Core(TM)2 Duo CPU E8400 @ 3.00GHz

Dims2000
() автор топика
Ответ на: комментарий от Sylvia

Помогло вот так

export CFLAGS="-O2 -march=core2 -mtune=core2"

но дальше повалились опять бесконечные грубые ошибки...

Фууф....

Dims2000
() автор топика
Ответ на: комментарий от Dims2000

CXXFLAGS тоже нужно задать, для c++ соответственно

-mtune= не имеет смысл задавать (на то же значение) если был задан -march=

к ошибкам хотя это наверное уже отношения не имеет
если уж патчите - делайте тогда с новым GCC и патч авторам...

Sylvia ★★★★★
()
Ответ на: комментарий от Sylvia

Да, CXXFLAG я тоже перезадал в то же значение и только тогда заработало.

Dims2000
() автор топика
Ответ на: комментарий от Dims2000

грубые ошибки начинаются вот так?
_sequitur_.cc:2810:34: error: numarray/arrayobject.h: No such file or directory


g2p r96

судя по всему оно не находит заголовки numpy

вам правда очень нужно собрать эту старую версию ?


Sylvia ★★★★★
()
Ответ на: комментарий от Sylvia

Не знаю почему так, там именно в mtune atom ставится, а в march ставится i686...

Dims2000
() автор топика
Ответ на: комментарий от Sylvia

> вам правда очень нужно собрать эту старую версию ?

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

Dims2000
() автор топика
Ответ на: комментарий от Dims2000

а что не так в новой?
уже же столько способов собрать ) и старым gcc
и

#include <cstdio>

в Utility.hh добавить и собирать GCC 4.4


python setup.py install --prefix=/usr

для инсталляции в системный каталог питона (хотя разводите помойку системе этим)

Sylvia ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.