LINUX.ORG.RU

nvcc, gcc и gentoo

 , ,


0

2

Известно, что nvcc (компилятор CUDA) обычно поддерживает не самую последнюю версию gcc, в данный момент — 4.6. Я с дури обновился на 4.7, старая версия осталась.

Казалось бы, ничего страшного: CXX='gcc-4.6.3' cmake myproject, но засада в том, что системный boost собран уже новым компилятором, и потому не линкуется. Я, конечно, вижу несколько решений проблемы, но интересно было бы услышать мнение знающих людей, как тут может помочь гибкость™ gentoo.

Т.е., грубо говоря, можно ли держать в системе несколько версий одного пакета, собранного разными компиляторами?


CXX='gcc-4.6.3'

неюзабельно и не автоматизировано, привет, обновки
давно уже запилил gcc-switcher.
а вот по поводу линковки...таки придётся и зависимости такие тоже пересобирать с нужным gcc
благо мой костылик делает это ненапряжным

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

неюзабельно и не автоматизировано, привет, обновки

Нужное правило добавить в скрипты сборки моей же программы — не проблема.

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

А можно подробнее, как такие пакеты будут сосуществовать в системе? Или всё-таки потребуется особая симлинковая магия?

dmfd ()

Слоты @ /etc/portage/env

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

Нужное правило добавить в скрипты сборки моей же программы

это уже извращение

А можно подробнее, как такие пакеты будут сосуществовать в системе? Или всё-таки потребуется особая симлинковая магия?

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

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

У cmake есть штатная фича по выбору компилятора. -DCMAKE_CXX_COMPILER=wtf. Можно запилить какой-нибудь settings.cmake в директории сборки и там выставить всё что угодно, в том числе пусть до кастомного буста.

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

это не универсально
в пределах все системы
чисто для одной своей программы, да

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

хотя, да - если ты пишешь эту программу, то такое правило будет к месту
но с остальной системой проще через gcc-switcher

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

В слоты разве можно засунуть одинаковые версии?

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

не слушай ты его
единственное что он предложил рабочее - это сеты и env
но это сильно много мусора и ненагладно

megabaks ★★★★ ()

Я не держу несколько версий, оставляю только одну - самую последнюю, ebuild-ы подпиливаю самостоятельно http://portage.perestoroniny.ru/

# eix -cI nvidia
[I] dev-util/nvidia-cuda-sdk (5.0.35-r5[1]@28.03.2013): NVIDIA CUDA Software Development Kit
[I] dev-util/nvidia-cuda-toolkit (5.0.35-r8[1]@28.03.2013): NVIDIA CUDA Toolkit
[I] media-video/nvidia-settings (313.26-r1[1]@16.03.2013): NVIDIA Linux X11 Settings Utility
[I] x11-drivers/nvidia-drivers (313.26-r1[1]@02.04.2013): NVIDIA X11 driver and GLX libraries
[1] "local-repo" /usr/local/portage
# eix -cI gcc
[I] sys-devel/gcc (4.8.0-r2(4.8)[2]@26.03.2013): The GNU Compiler Collection
[I] sys-devel/gcc-config (1.8@24.02.2013): utility to manage compilers
[1] "hardened-dev" /var/lib/layman/hardened-development
[2] "local-repo" /usr/local/portage
# uname -a
Linux master 3.8.5-gentoo-r10 #1 SMP PREEMPT Sun Mar 31 00:29:18 MSK 2013 x86_64 AMD Phenom(tm) II X6 1100T Processor AuthenticAMD GNU/Linux
PS. После перехода с gcc-4.7.2 на gcc-4.8.0 не собираются примеры из cuda sdk 5.0.35. Теперь снова нужно время чтобы залатать старый код проектов из cuda sdk под новую версию gcc.

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

Перечитал. Ты про boost? В принципе, можешь скопировать его в оверлей и там обозвать его какой угодной версией, а про запиливание слотов в кастомных ебилдах спроси лучше кого-нибудь ещё (теоретически это возможно). Или ты можешь создать у себя чрут в котором держать старый тулчейн и там собирать. Думаю, сrossdev с этим справится, хотя я не пробовал кросс-компилять amd64 из amd64.

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

Про буст, да.

Или ты можешь создать у себя чрут в котором держать старый тулчейн и там собирать.

Как вариант. Сейчас у меня сделано через кастомный билд, но это windows way.

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