Я хочу собрать boost и другие пакеты в buildroot с -std = c ++ 11?
Можно ли передать его глобально, вместо этого путем исправления программных файлов .mk?
Нет простого способа передать его глобально, и на то есть веская причина: некоторые пакеты могут не собираться с C ++ 11, например. потому что они используют новые зарезервированные слова.
Однако если вы действительно хотите рискнуть, у вас есть три варианта:
добавлять -std=c++11
в BR2_TARGET_OPTIMIZATION
(в меню Toolchain). Это будет включено в оболочку набора инструментов и, следовательно, будет использоваться для каждой компиляции. Обратите внимание, что для программ на C это даст вам предупреждение «опция командной строки‘ -std = c ++ 11 ’допустима для C ++ / ObjC ++, но не для C». Так что пакеты, которые к -Werror сломаются.
Измените package / Makefile.in и добавьте -std=c++11
в TARGET_CXXFLAGS
, В этом случае он передается только компиляторам C ++. Тем не мение, TARGET_CXXFLAGS
просто передается в систему сборки пакетов, и не все системы сборки соблюдают его.
изменять toolchain/toolchain-wrapper.c
добавить эту опцию, когда вызывается g ++. Это не имеет недостатков двух других, но это больше работы для реализации.
Других решений пока нет …