Eclipse CDT, установленный через devtoolset-4 в CentOS 7, использует неверную версию gcc/g++
Я установил коллекцию программного обеспечения devtoolset-4 на машину CentOS 7, которую я использую для разработки. Эта коллекция программного обеспечения включает компилятор, который я хочу использовать, g++ 5.2.1, а также Eclipse CDT 4.5 (Mars). Когда я создаю новый проект C++ в Eclipse и перехожу к свойствам проекта (щелкните правой кнопкой мыши по проекту, затем Properties -> C/C++ Build -> Environment), я вижу, что Eclipse создал переменную среды PATH, которая добавляется к текущему PATH при создании моего проекта. Значение определяемой Eclipse переменной PATH:
/bin:/opt/rh/devtoolset-4/root/usr/bin:/opt/rh/rh-java-common/root/usr/bin:/usr/lib64/qt-3.3/bin:/home/kts /perl5/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/sbin:/home/kts/.local/bin:/home/kts/bin
Первая запись в PATH - это /bin, которая в CentOS 7 является символической ссылкой на / usr / bin. В / usr / bin находится бинарный файл g++ 4.8.5, который устанавливается из официальных репозиториев CentOS. Это приводит к тому, что Eclipse строит мой проект с g++ 4.8.5 вместо версии, которую я на самом деле хочу использовать, - это двоичный файл g ++ 5.2.1, расположенный в каталоге / opt / rh / devtoolset-4 / root / usr / bin (вторая запись в PATH). Если я удаляю запись / bin из переменной Eclipse PATH, мой проект собирается с нужным g ++ 5.2.1.
Хотя я немного сомневаюсь, что это исправление будет продвигаться вперед, поскольку я ожидал, что проекты, созданные в версии Eclipse, включенной в devtoolset-4, будут работать "из коробки" с версией g ++, включенной в devtoolset-4. Кто-нибудь еще сталкивался с этой проблемой? Есть ли что-то, что я не правильно делаю при использовании коллекции программ devtoolset-4? Или это ошибка? Любое понимание очень ценится.
1 ответ
Как правило, когда есть несколько версий g++
установлены суффиксные версии g++
исполняемый файл - например g++-4.8
, g++-5
- доступно, так что вы можете выбрать нужную версию, используя соответствующий суффикс. Вы можете убедиться, что это так, запустив g++-5
в оболочке (с соответствующей настройкой PATH) и проверкой ее разрешения.
Предполагая, что это так, вам просто нужно настроить Eclipse для использования g++-5
вместо простого g++
, Вы можете сделать это в Свойствах проекта -> Сборка C/C++ -> Настройки -> Настройки инструмента. Под каждым из "GCC C++ Compiler", "GCC C Compiler" и "GCC C++ Linker" измените "Команду" с g++
или же gcc
в g++-5
или же gcc-5
,
Обратите внимание, что GCC недавно изменила свою нумерацию версий. Если раньше ежегодные выпуски увеличивали только номер второй версии (4.7, 4.8, 4.9), то начиная с версии 5 и далее каждый годовой выпуск увеличивает номер первой версии. Соответственно, суффикс для версий 5 и выше - это только одно число, например g++-5
не g++-5.2
(тогда как раньше это было бы g++-4.8
, g++-4.9
так далее.).