Как использовать gcc 4.9, когда он установлен в том же каталоге как более новый gcc

Я установил и gcc 5 и gcc 4.9 в том же каталоге (/usr/bin). Используя nvcc с --compiler-bindir невозможно начиная с обоих gccs находятся в том же каталоге.

Мне нужно к команде выполнения nvcc --compiler-bindir /path/with/older/gcc/directory. Действительно ли возможно сделать это, когда оба gccs находятся в том же dir?

0
задан 23 December 2015 в 17:13

1 ответ

Я принимаю 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) - действительно ли это больше не действительно?

Не уверенный, если этот подход будет работать, на основе отрывка документации, я читал, но он может работать, так как тот ответ был там некоторое время.

4
ответ дан 30 September 2019 в 00:14

Другие вопросы по тегам:

Похожие вопросы: