какую версию g ++ выбирает Scons | нераспознанный параметр командной строки & quot; -std = c ++ 11 & quot;

Я испытываю проблему при использовании Scons 2.3.0 в OpenSUSE:

Когда я добавил опцию «-std = c ++ 11», я увидел ошибку

cc1plus: error: unrecognized command line option "-std=c++11"

Я понял, что это потому, что моя версия g ++ была слишком старой (4.1). Поэтому я обновил его до 4.7.1.
Следующее тоже сделано

  1. Я переместил путь g ++ 4.7.1 на первое место в $ PATH (до / usr / bin)
  2. когда я пытаюсь

      which g++
    

    Я видел, что это показывает путь к моей новой g ++ 4.7.1

  3. когда я пытаюсь g++ -v Я тоже видел версию 4.7.1

  4. БЕЗ использования scons, если я попытаюсь построить простой helloWorld с g++ -std=c++11 helloWorld.cppвсе работает нормально.

  5. Теперь с помощью scons я увидел cc1plus: error: unrecognized command line option "-std=c++11"

  6. Я даже добавил s.system("g++ -v") в моем файле SConstruct он все еще печатает правильную версию (4.7.1)

Поэтому я не уверен, какую часть я сделал неправильно.

Пожалуйста, дайте мне совет

Заранее спасибо за помощь!

0

Решение

SCons выбирает более старую версию компилятора по умолчанию.

дела os.system("g++ -v") будет использовать ваш PATH, но SCons внутренне не использует PATH для поиска компилятора, он выглядит в стандартных местах.

Если вы не можете удалить старую версию компилятора, вам, возможно, придется явно указать новый компилятор. Это можно сделать, установив некоторые переменные конструкции в среде следующим образом:

env = Environment()
env.Replace(CXX='path/g++')
env.Replace(CC='path/gcc')

Вы можете найти все строительные переменные Вот.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]