Показаны сообщения с ярлыком gcc. Показать все сообщения
Показаны сообщения с ярлыком gcc. Показать все сообщения

понедельник, 29 января 2018 г.

CentOS и cmake: this file requires compiler and library support for the iso c++ 2011 standard

Даже после установки devtoolset-7 софт может не собираться, выдавая
this file requires compiler and library support for the iso c++ 2011 standard
Была найдена такая штука:

# http://stackoverflow.com/questions/10851247/how-to-activate-c-11-in-cmake
include(CheckCXXCompilerFlag)
CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11)
CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X)
if(COMPILER_SUPPORTS_CXX11)
    add_definitions(-std=c++11)
elseif(COMPILER_SUPPORTS_CXX0X)
    add_definitions(-std=c++0x)
else()
    message(STATUS "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support. Please use a different C++ compiler.")
endif()

Вставляем в CMakeLists.txt поближе к началу, собираем.

Хотя мелькал и такой вариант
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

ручной вариант
$ cmake -DCMAKE_CXX_FLAGS=-std=c++11 ..

CentOS 7 и gcc разных версий

Штатный gcc - 4.8, что уже весьма старо, а тот же гугл обожает говнокодить на свежем с++17. Впрочем, можно поставить и более свежие версии. под центос 6, тут действуем по аналогии.

yum -y install centos-release-scl
yum search devtoolset
Будет огромный список, который делится на части по версиям. В частности, devtoolset-3 это gcc 4.9, -4 это 5.3 итд.
На самом деле, ставить целиком devtoolset-x не нужно, обычно достаточно только
devtoolset-3-gcc
devtoolset-3-gcc-с++

Дальше переключаем версию, несколько вариантов
1) scl enable devtoolset-3 bash
2) /opt/rh/devtoolset-3/enable
3) update-alternatives --install /usr/bin/gcc-4.9 gcc-4.9 /opt/rh/devtoolset-3/root/usr/bin/gcc 10
update-alternatives --install /usr/bin/g++-4.9 g++-4.9 /opt/rh/devtoolset-3/root/usr/bin/g++ 10
(тут уже сначала надо смотреть, что куда ставится, зато потом переключать можно глобально)

А посмотреть, какая версия в каком тулсете, можно так:
$ yum info devtoolset-4-gcc |grep Version
Version     : 5.3.1

среда, 11 мая 2016 г.

rpmbuild: *** ERROR: No build ID note found in ...

Лечение:
1) добавить в сборку node-id
--buil-id
Если не помогло:
2) отключить сборку debuginfo
a) %global _missing_build_ids_terminate_build 0
б) %global debug_package %{nil}
в) попробовать удалить "проблемные" файлы

пятница, 6 мая 2016 г.

centos 6: ставим gcc 4.9.2

yum install centos-release-scl-rh
yum install devtoolset-3-gcc devtoolset-3-gcc-c++

И для активации
scl enable devtoolset-3 bash