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 так далее.).

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