Недавно я построил более старую версию GCC и установил ее в своем домашнем каталоге (спецификация ~/local/gcc-5.3.0
). Однако мне нужен этот компилятор только для проектов CUDA, и он будет работать с системным компилятором (GCC 6.2.1) в остальное время. Поэтому, я думаю, мне нужно найти способ переключения между ними по мере необходимости и таким образом, который также изменяет библиотеку и включает пути соответствующим образом.Переключение между различными версиями GCC
Я понимаю, что update-alternatives
- это один из способов сделать это, но, похоже, требуется установить права root, которых у меня нет.
Следующая лучшая вещь может быть, чтобы написать функцию оболочки в .bashrc
, что обеспечивает:
Каждая коммутаторами вызовов между системой и локальной НКУ
Всякий раз, когда переключатель сделан, он регулирует путей, так что, когда выбран локальный gcc, он сначала ищет файлы заголовков и библиотеки, которые были установлены сами по себе, прежде чем искать в системных путях, например
/usr/local/include
илиusr/local/lib
. Предыдущий answer предполагает, что модификацииLD_LIBRARY_PATH
должно быть достаточно, потому что установка GCC «знает», где есть собственные файлы заголовков и статические библиотеки (я не уверен, что это правильно, я думал, что мне может понадобиться изменитьCPATH
и т. Д.).
Это лучший способ достичь этого? Если да, то какие пути я должен задать при реализации такой функции?
Мой личный подход к этому не очень сложный: у меня есть сценарий оболочки, который просто добавляет CUDA bin dir и соответствующий gcc bin dir до $ PATH. На самом деле у меня есть несколько сценариев, чтобы поддерживать разные версии CUDA. Когда я перестаю работать с CUDA или хочу перейти на другую версию, я открываю новую оболочку. – tera
Вы упомянули о добавлении только каталога 'bin' из gcc в' PATH'. Разве также не нужно изменять 'LD_LIBRARY_PATH', если не включить каталоги? – rahul1210
Оба nvcc и gcc знают, где находятся их библиотеки, поэтому достаточно просто изменить $ PATH. – tera