IT Share you

Mac 터미널에서 C ++ 11 지원으로 C ++를 컴파일하는 방법

shareyou 2020. 11. 17. 21:22
반응형

Mac 터미널에서 C ++ 11 지원으로 C ++를 컴파일하는 방법


Mac Terminal에서 C ++ 11 소스 코드를 컴파일하고 싶었지만 실패했습니다. 나는 시도 g++ -std=c++11, g++ -std=c++0x, g++ -std=gnu++11g++ -std=gnu++0x하지만 아무것도 작동하지 않습니다. 터미널은 항상 읽습니다 unrecognized command line option. 그러나 g++ -std=gnu그와 같은 것들은 잘 작동했습니다 (물론 C ++ 11 소스 코드는 통과 할 수 없습니다).

C ++ 11 지원을 켜려면 어떤 옵션을 사용해야합니까?

그건 그렇고, 내가 사용하는 명령 줄 도구는 Xcode 내에 설치되어 있으며 최신 버전이라고 확신합니다.


다른 사람들이 지적했듯이 당신은 사용해야 clang++보다는 g++. 또한 기본 libstdc ++ 대신 libc ++ 라이브러리를 사용해야합니다. 포함 된 libstdc ++ 버전은 매우 오래되었으므로 C ++ 11 라이브러리 기능을 포함하지 않습니다.

clang++ -std=c++11 -stdlib=libc++ -Weverything main.cpp

Xcode 용 명령 줄 도구를 설치하지 않은 경우 도구를 사용하지 않고도 컴파일러 및 기타 도구를 실행할 수 있습니다 xcrun.

xcrun clang++ -std=c++11 -stdlib=libc++ -Weverything main.cpp

또한 비활성화하려는 특정 경고가있는 경우 컴파일러에 추가 플래그를 전달하여이를 수행 할 수 있습니다. 경고 메시지의 끝에는 경고를 활성화하는 가장 구체적인 플래그가 표시됩니다. 해당 경고를 비활성화하려면 no-경고 이름 앞에 추가 합니다.

예를 들어, C ++ 98 호환성 경고를 원하지 않을 것입니다. 이러한 경고가 끝나면 플래그 -Wc++98-compat를 표시하고 비활성화하려면 통과 -Wno-c++98-compat합니다.


엑스 코드는 사용 clang하고 clang++,하지 컴파일 할 때 g++(당신이 일을 사용자 정의하지 않은 가정). 대신 다음을 시도하십시오.

$ cat t.cpp
#include <iostream>

int main()
{
    int* p = nullptr;
    std::cout << p << std::endl;
}
$ clang++ -std=c++11 -stdlib=libc++ t.cpp
$ ./a.out 
0x0

내가 생략했다는 지적에 대한 bames53의 답변 덕분 -stdlib=libc++입니다.

일부 GNU 확장을 사용하려는 경우 (C ++ 11도 사용) -std=gnu++11대신을 사용할 수 있습니다. -std=c++11그러면 C ++ 11 모드가 켜지고 GNU 확장도 활성화됩니다.

참고 URL : https://stackoverflow.com/questions/14228856/how-to-compile-c-with-c11-support-in-mac-terminal

반응형