LINUX.ORG.RU

Традиционно кастую megabaks

ymuv ★★★★
() автор топика

а он не просто так тянет 4.4.*
с 4.5 и выше оно всё равно не работает, потому запилил вот такой костыль [cuda] [gcc] gcc-4.5 (комментарий)
чтобы используя в системе gcc >=4.5, можно было без проблем собирать cuda-sdk и прочий капризный софт с произвольной версией gcc
ну или предоставлять той же куде произвольную версию

megabaks ★★★★
()

ymuv

Как установить gcc-4.4.6-r1, чтоб он встал рядом с 4.6.2?

они в разных слотах стоят - так что не проблема

sys-devel/gcc-4.4.6-r1
sys-devel/gcc-4.5.3-r1
sys-devel/gcc-4.6.1-r1
[ root@desktop ] megabaks # gcc-config -l
 [1] i686-pc-linux-gnu-4.4.3-pre9999
 [2] i686-pc-linux-gnu-4.4.6
 [3] i686-pc-linux-gnu-4.5.0-pre9999
 [4] i686-pc-linux-gnu-4.5.3
 [5] i686-pc-linux-gnu-4.6.1 *
[ root@desktop ] megabaks # 

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

Вопросик по поводу скрипта и файла package.compilers

dev-util/nvidia-cuda-sdk 4.4.6
Но компилятор ставит gcc-4.4.6-r1. И ЕМНИП gcc -v выдаст gcc-4.4.6-r1 работать будет или нужно подправить на dev-util/nvidia-cuda-sdk 4.4.6-r1

[lamer_mode] Что значит r1? Чем отличается от простого gcc-4.4.6? Исходники ведь те же. [/lamer_mode]

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

И еще вопрос. В гцц-4.6 я собирал систему CFLAGS для core i7. 4.6 не поддержывает. Как задать CFLAGS для одного компилятора? (не для пакета)

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

ymuv

Но компилятор ставит gcc-4.4.6-r1

а нас рать! :3

sys-devel/gcc-4.4.6-r1
sys-devel/gcc-4.5.3-r1
sys-devel/gcc-4.6.1-r1
но
[ root@desktop ] megabaks # ls -1 /usr/lib/gcc/i686-pc-linux-gnu/
4.4.6
4.5.3
4.6.1
[ root@desktop ] megabaks #
таки дела

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

для отдельного компилятора...
прозреваю опять велик в bashrc

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

>Что значит r1?
ревизия - может патч какой, или ебилд изменился или таки другие сосрсы
можт быть всё что угодно из этого

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

UPD:

#COMPILERS
if [ -f ${ROOT}/etc/portage/package.compilers ]; then
   while read target ver; do
      if [ "${target}" = "${CATEGORY}/${PN}" ]; then
 export ROOTPATH="/usr/$MACHTYPE/gcc-bin/$ver:$ROOTPATH"
 REAL_GCC_PATH="$(gcc-config -c| cut -d\- -f1,2,3,4)"
 REAL_GCC_VER="$(gcc-config -c | cut -d\- -f5)"
 export LIBRARY_PATH="/usr/lib/gcc/${REAL_GCC_PATH}/${REAL_GCC_VER}:${LIBRARY_PATH}"
      fi
   done < ${ROOT}/etc/portage/package.compilers
fi
так лучше - архитектурно-независимо

megabaks ★★★★
()

В use multislot. Странно, но мне такой софт не встречался, который этого требовал бы.

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

Странно, но мне такой софт не встречался, который этого требовал бы.

А он этого и не требует.

$ euse -i multislot
...
multislot
    sys-devel/gcc: Allow for SLOTs to include minor version (3.3.4 
    instead of just 3.3)

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

Странно. Я вот переписал ебилд в локальном оверлее, чтобы он требовал gcc не выше 4.5 (у меня системный - 4.5.*, последний стабильный) + подправил один из заголовков CUDA (там сменил версию gcc с 4.5 на 4.6, начиная с этой версии должно специально выдавать ошибки компиляции), после этого cuda toolkit и sdk установились без gcc-4.4, а с уже имевшимся gcc-4.5. Ни одного бага ещё не заметил, всё работает как раньше. Gentoo amd64 (стабильная ветка Gentoo, тестовые дрова nvidia и cuda sdk и toolkit). Я и прошлые версии cuda sdk и toolkit запускал с системным компилятором, а не старой версией, требуемой Nvidia, с багами на этой почве сталкиваться не приходилось. Не понятно, зачем они вводят такие искусственные ограничения...

anonymous
()

несколько версий gcc нормально сосуществуют друг с другом, переключаются по gcc-config

jcd ★★★★★
()
emerge sys-devel/gcc:4.4
mkdir -p /etc/portage/env/dev-utils
echo -e CC=gcc-4.4.6\\nCXX=gcc-4.4.6 > /etc/portage/env/dev-utils/nvidia-cuda-sdk
emerge dev-utils/nvidia-cuda-sdk
Black_Shadow ★★★★★
()
Ответ на: комментарий от ymuv

Как задать CFLAGS для одного компилятора?

В том же env файле (см. мой комментарий выше) задай CFLAGS

Black_Shadow ★★★★★
()

Обе версии в одном слоте, следовательно поставить без правки ебилда проблематично.

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

А, прошу прощения, не правильно прочитал номера версий. 4.4.х и 4.6.х - это разные слоты. Ставьте обе версии, переключайтесь с помощью gcc-config.

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

> и весь приплюснытый код сфейлит

эх...5 звёзд, а такую чушь несёт - фэйл


Нужно внимательно читать, что пишет gcc-config. Опять же в топике не оговаривалось, что будет собираться - с плюсами или без оных.

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

а что он пишет?
что надо профиль сорснуть?
ну и что?
откуда gcc 4.4 возьмёт «GLIBCXX_3.4.14», предоставляемый gcc-4.5 или «GLIBCXX_3.4.15», предоставляемый gcc-4.6, которые требуют все приплюснутые приложения собранные с gcc 4.5 и 4.6, соответственно?
правильно - он о нём не знает, так он предоставит свою версию библиотеки, прописанную аккурат в окружении, которое и будет взято из профиля
таки дела
именно поэтому в последнем варианте костыля у меня есть строка
export LIBRARY_PATH=«$(gcc-config -L):${LIBRARY_PATH}»
а произвольная версия gcc задаётся через ROOTPATH, а не овер gcc-config

megabaks ★★★★
()
Ответ на: комментарий от andreyu
#COMPILERS
if [ -f ${ROOT}/etc/portage/package.compilers ]; then
  while read target ver; do
   if [ "${target}" = "${CATEGORY}/${PN}" ]; then
    export ROOTPATH="/usr/$MACHTYPE/gcc-bin/$ver:$ROOTPATH"
    export LIBRARY_PATH="$(gcc-config -L):${LIBRARY_PATH}"
   fi
  done < ${ROOT}/etc/portage/package.compilers
fi

подумай почему именно так, а не иначе

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

введи эту команду и посмотри что она выдаёт
разжую:
если в /etc/portage/package.compilers написать «foo 4.4.6»
то ROOTPATH примет вид «/usr/$MARCHTYPE/gcc-bin/4.4.6:$ROOTPATH»
т.е. даже при активном профиле 4.6, при вызове gcc/g++ будут использоваться 4.4.6 версии этих компиляторов
а вот приплюснутая либа будет из 4.6 - дабы не сломать приплюснутый софт
и это совсем не то, что делает gcc-config N
как ещё проще написать - хз

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

Нужно внимательно читать, что пишет gcc-config. Опять же в топике не оговаривалось, что будет собираться - с плюсами или без оных.

Пробовал сменить версию:

 gcc-config 1 

 $ dolphin 
dolphin: /usr/lib/gcc/x86_64-pc-linux-gnu/4.4.6/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by /usr/lib64/libstreamanalyzer.so.0)
dolphin: /usr/lib/gcc/x86_64-pc-linux-gnu/4.4.6/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by /usr/lib64/libstreams.so.0)

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

это я ему и пытаюсь объяснит уже хз какой раз :3

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

пилить куду? проще уж предоставить нужный gcc, тем более необходимое всё есть
работать это всё будет и с новыми gcc, речь про версию необходимую куде при сборке
хакать её не очень красиво

megabaks ★★★★
()

лол, а в чём проблема? emerge =gcc-4.4.6-r1

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

малыш, разберись в вопросе для начала
в 4.6.1 GLIBCXX_3.4.15
а в 4.5.3 GLIBCXX_3.4.14
вот и подумай, что будет если софт собрать с 4.6, а запустить на 4.5

megabaks ★★★★
()
Ответ на: комментарий от megabaks
#COMPILERS
if [ -f ${ROOT}/etc/portage/package.compilers ]; then
   while read target ver; do
      if [ "${target}" = "${CATEGORY}/${PN}" ]; then
 export ROOTPATH="/usr/$MACHTYPE/gcc-bin/$ver:$ROOTPATH"
 REAL_GCC_PATH="$(gcc-config -c| cut -d\- -f1,2,3,4)"
 REAL_GCC_VER="$(gcc-config -c | cut -d\- -f5)"
 export LIBRARY_PATH="/usr/lib/gcc/${REAL_GCC_PATH}/${REAL_GCC_VER}:${LIBRARY_PATH}"
      fi
   done < ${ROOT}/etc/portage/package.compilers
fi

Подскажите пожалуйста в какой файл вписывать этот «костыль» ? Мои познания пока далековаты от всего, что я тут читаю. Мне CUDA нужна для Blender-а . Ставил по этой Инструкции.

система LinuxMint 12...

Упоминаемого файла ~./bashrc в своей пользовательской папке я не нашёл. Но например он есть в паралельно установленной Ubuntu. При попытке запуска КУДЫ в блендере в консоли вылетает сообщение .

Compiling CUDA kernel ... nvcc warning : Option '--opencc-options (-Xopencc)' is obsolete and ignored, when targeting compute_20, sm_20, or higher In file included from /usr/local/cuda/bin/../include/cuda_runtime.h:59:0, from <command-line>:0: /usr/local/cuda/bin/../include/host_config.h:82:2: ошибка: #error — unsupported GNU version! gcc 4.6 and up are not supported!

из которого после поисков в сети я выяснил что у меня более старшая версия компилятора. Снести как я понял её нереально. Сейчас стоит gcc версии 4.6 . А скажем в той же Ubuntu 4.4.6 и там CUDA-a в Blender-e работает.

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

это для генты и её форков
в минте хз - дуамаю сделать обёртку будет самым простым
просто перебив переменные
но тут нужны шарящие в убунто-специфичных вещах

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

ещё один альтернативно одарённый
ты читать умеешь?
пройди по ссылке, данной выше, и слейся

megabaks ★★★★
()
Ответ на: комментарий от mlyaghost
[ root@desktop ] megabaks # gcc-config -l
 [1] i686-pc-linux-gnu-4.4.3-pre9999
 [2] i686-pc-linux-gnu-4.4.6
 [3] i686-pc-linux-gnu-4.5.0-pre9999
 [4] i686-pc-linux-gnu-4.5.3
 [5] i686-pc-linux-gnu-4.6.1 *
[ root@desktop ] megabaks # gcc-config 2
 * Switching native-compiler to i686-pc-linux-gnu-4.4.6 ...
>>> Regenerating /etc/ld.so.cache...                                                                                                                     [ ok ]

 * If you intend to use the gcc from the new profile in an already
 * running shell, please remember to do:

 *   . /etc/profile

desktop megabaks # gcc-config -l
 [1] i686-pc-linux-gnu-4.4.3-pre9999
 [2] i686-pc-linux-gnu-4.4.6 *
 [3] i686-pc-linux-gnu-4.5.0-pre9999
 [4] i686-pc-linux-gnu-4.5.3
 [5] i686-pc-linux-gnu-4.6.1
desktop megabaks # 

а теперь запускаем крусадер

[ megabaks@desktop ] ~ $ krusader
krusader: /usr/lib/gcc/i686-pc-linux-gnu/4.4.6/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by /usr/lib/libstreamanalyzer.so.0)
krusader: /usr/lib/gcc/i686-pc-linux-gnu/4.4.6/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by /usr/lib/libstreams.so.0)
[ megabaks@desktop ] ~ $
всё понятно, «пряморукий» неуч!?

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

повторяю специально для особо мегабакснутых: я включаю через gcc-config версию 4.4.6, запускаю dolphin - о чудо, он запускается

куда мне отослать багрепорт, чтобы они исправили эту ошибку, противоречащую твоим фантазиям?

mlyaghost
()
Ответ на: комментарий от megabaks

каким гцц собрана система?

4.6.2, сказал же выше

ещё один подобный ответ и ты отправишься в игнор, неуч

побаттхёрти тут ещё :-D

mlyaghost
()
Ответ на: комментарий от megabaks
objdump -p /usr/lib/libstreamanalyzer.so.0 | grep GLIBCXX
    0x0297f861 0x00 13 GLIBCXX_3.4.11
    0x02297f89 0x00 11 GLIBCXX_3.4.9
    0x0297f865 0x00 05 GLIBCXX_3.4.15
    0x08922974 0x00 03 GLIBCXX_3.4

или lib64, если у тебя 64 бит

в 64-битных системах /lib является симлинком на /lib64

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

0x0297f865 0x00 05 GLIBCXX_3.4.15
4.6.2, да
а 4.4.6 предоставляет 3.4.13
ты сорсишь хоть профиль при переключении?
а то заврался ты что-то

megabaks ★★★★
()
Ответ на: комментарий от megabaks
ldd /usr/lib/libstreamanalyzer.so.0
/usr/lib/libstreamanalyzer.so.0: /usr/lib/gcc/x86_64-pc-linux-gnu/4.4.6/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by /usr/lib/libstreamanalyzer.so.0)
/usr/lib/libstreamanalyzer.so.0: /usr/lib/gcc/x86_64-pc-linux-gnu/4.4.6/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by /usr/lib64/libstreams.so.0)
        linux-vdso.so.1 =>  (0x00007fff4dbff000)
        libstreams.so.0 => /usr/lib64/libstreams.so.0 (0x00007f772a8af000)
        libxml2.so.2 => /usr/lib64/libxml2.so.2 (0x00007f772a511000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00007f772a2dc000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f772a0bf000)
        libstdc++.so.6 => /usr/lib/gcc/x86_64-pc-linux-gnu/4.4.6/libstdc++.so.6 (0x00007f7729db4000)
        libc.so.6 => /lib64/libc.so.6 (0x00007f7729a28000)
        libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f7729811000)
        libz.so.1 => /lib64/libz.so.1 (0x00007f77295fb000)
        libbz2.so.1 => /lib64/libbz2.so.1 (0x00007f77293ea000)
        libm.so.6 => /lib64/libm.so.6 (0x00007f7729168000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f772ad68000)
mlyaghost
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.