compiler-errors makefile - cc1plus:오류:인식 할 수없는 명령 줄 옵션 "-std=c++11"with g++




cflags gcc (5)

나도 같은 오류가있어, 그것을 수정 한 -D 플래그로 컴파일해라.

g ++ -Dstd = c ++ 11

g++-std=c++11 또는 c++0x 플래그 중 하나를 사용하여 컴파일하려고합니다.

그러나이 오류가 발생합니다.

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

g ++ - 버전

g++ (GCC) 4.1.2 20080704 (Red Hat 4.1.2-54)
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

너는 이걸 시도해야 해.

g++-4.4 -std=c++0x or g++-4.7 -std=c++0x

G ++ 버전을보고 나쁘게 업데이트해야합니다. C ++ 11은 G ++ 4.3 이후에만 제공되었습니다. 최신 버전은 4.7입니다.

이전 버전의 G ++ 4.7에서는 -std=c++0x 를 사용해야합니다. 최신 버전의 경우 -std=c++11 사용할 수 있습니다.


gcc 웹 사이트 에서 인용 :

C ++ 11 기능은 GCC Subversion 저장소의 트렁크와 GCC 4.3 이상에서 "mainline"GCC 컴파일러의 일부로 사용할 수 있습니다. C ++ 0x 지원을 사용하려면 g ++ 명령 줄에 명령 줄 매개 변수 -std = c ++ 0x를 추가하십시오. 또는 C ++ 0x 확장과 함께 GNU 확장을 사용하려면 g ++ 명령 줄에 -std = gnu ++ 0x를 추가하십시오. GCC 4.7 이상은 -std = c ++ 11과 -std = gnu ++ 11을 지원합니다.

그래서 아마도 -std=c++11 지원하지 않는 g ++ 버전을 사용할 것입니다. 대신 -std=c++0x 를 시도하십시오.

C ++ 11 기능은 버전 4.3 이상에서만 사용할 수 있습니다.


자신이 알고있는 것처럼 두 옵션의 차이점은 C ++ 표준을 위반하는 GNU 확장이 사용 가능한지 여부입니다. 여기에 GNU 확장이 설명되어 here . 표준에 위배되지 않는 한 -std=c++11 사용할 때 여전히 일부 확장이 적용될 수 있습니다.

예를 들어, MinGW 컴파일러를 사용할 때, Boost.Lexical_Cast 작동 Boost.Lexical_Cast 위한 확장이 필요 Boost.Lexical_Cast . 그러나 이들 중 어느 것도 사용하지 않는 한 최대의 휴대 성을 위해 표준을 고수하지 않는 것이 좋습니다. 컴파일러를 변경해야하는 경우 유용 할 수 있습니다.





c++ c++11 compiler-errors g++ std