Я установил и gcc 5 и gcc 4.9 в том же каталоге (/usr/bin
). Используя nvcc
с --compiler-bindir
невозможно начиная с обоих gcc
s находятся в том же каталоге.
Мне нужно к команде выполнения nvcc --compiler-bindir /path/with/older/gcc/directory
. Действительно ли возможно сделать это, когда оба gccs находятся в том же dir?
Я принимаю
nvcc
компилятор CUDA Nvidia, который является тем, что этот ответ на основе, но так как Вы не предоставляете ту информацию, это - предположение...
Следующее является отрывком из документов инструментария CUDA (по http://docs.nvidia.com/cuda/cuda-compiler-driver-nvcc/):
На всех платформах, исполняемый файл компилятора хоста по умолчанию (
gcc
иg++
на Linux,clang
иclang++
на Mac OS X, иcl.exe
в Windows), найденный в текущем пути поиска выполнения будет использоваться, если не указано иначе с подходящими вариантами (см. Спецификации Файла и Пути). - Посмотрите больше в: http://docs.nvidia.com/cuda/cuda-compiler-driver-nvcc/#sthash.Tphx1Ttz.dpuf
На основе этого Вы можете технически 'вызывать' a gcc
и g++
версия, которая будет сделана доступным временно методологией в моем теперь удаленном ответе...
Существует причина это update-alternatives
существует - это разработано к 'символьной ссылке' gcc
и подобный фактическим исполняемым именам. В действительности, /usr/bin/gcc-4.9
на самом деле исполняемый файл компилятора gcc 4.9, и gcc
просто символьные ссылки на /etc/alternatives/gcc
который в свою очередь является символьной ссылкой на реальный gcc исполняемый файл
В моих 14,04 средах это показывают здесь:
% file /usr/bin/gcc
/usr/bin/gcc: symbolic link to `/etc/alternatives/gcc'
% file /etc/alternatives/gcc
/etc/alternatives/gcc: symbolic link to `/usr/bin/gcc-4.8'
У меня на самом деле есть много версий GCC на здесь, от 4,6 до 4,9, но это относится к другим версиям также.
Для изменения альтернативного временно можно сделать это с этой командой: sudo update-alternatives --config gcc
Это - то, что это показывает в моей системе с blinky курсором в конце:
% sudo update-alternatives --config gcc
There are 4 choices for the alternative gcc (providing /usr/bin/gcc).
Selection Path Priority Status
------------------------------------------------------------
* 0 /usr/bin/gcc-4.8 60 auto mode
1 /usr/bin/gcc-4.6 30 manual mode
2 /usr/bin/gcc-4.7 50 manual mode
3 /usr/bin/gcc-4.8 60 manual mode
4 /usr/bin/gcc-4.9 40 manual mode
Press enter to keep the current choice[*], or type selection number:
Я вручную восстановил приоритеты, но Вы видите, что я могу вручную выбрать, какой компилятор я хочу использовать тем временем. Поэтому можно временно изменить это и затем переключить его на gcc
Вы хотите и затем переключаете его назад по окончании.
Это должно, затем, разрешить Вам временно использовать один компилятор gcc
или g++
вызов, вместо того, чтобы иметь необходимость указать каталог компилятора.
Обратите внимание, что это должно будет, вероятно, быть также сделано для g++
также - особенно учитывая отрывок из документов выше. Так, используйте g++
вместо gcc
для изменения g++
'версия для использования'.
Проблема, я не вижу более легкого пути, чем это в этом случае. Так каждый раз, когда Вы входите и изменяете компилятор этим способом, для возвращения его к значению по умолчанию, необходимо работать update-alternatives
команды снова для сбрасывания его назад к тому, каково это было.
С другой стороны, Вы могли попытаться использовать решение, изложенное steeldriver, который указывает на другое потенциальное решение (на сайте Unix & Linux):
Метод, который я видел в другом месте, является к символьной ссылке желаемой gcc-x.y версией к/usr/local/cuda/bin/gcc (и аналогично для g ++-x.y) - действительно ли это больше не действительно?
Не уверенный, если этот подход будет работать, на основе отрывка документации, я читал, но он может работать, так как тот ответ был там некоторое время.