간단한 cpp 프로그램은 표준 GNU/Linux에서는 실행되지만 MacOS M1에서는 실행되지 않습니다.

간단한 cpp 프로그램은 표준 GNU/Linux에서는 실행되지만 MacOS M1에서는 실행되지 않습니다.

나는 한동안 GNU/Linux(Debian)에서 간단한 프로그램을 작성해 왔으며 최근에는 새로운 M1 칩에서 실행되는 macOS에서 그것을 시험해보고 싶었습니다. 그러나 g++는 실행을 거부하고 오류를 발생시킵니다.많은실수. 데비안에서 g++에는 전혀 문제가 없습니다. AFAIK, 모든 종속성이 이미 충족되었으므로 왜 실행되지 않는지 이해할 수 없습니다.

내 코드에서 발췌(두 가지 방법 모두, 더 많은 방법이 있지만 이것이 내가 공유할 수 있는 전부입니다):

    #include <unistd.h>
    
    uint64_t constexpr mix(char m, uint64_t s)
    {
        return ((s << 7) + ~(s >> 3)) + ~m;
    }
    
    uint64_t constexpr hashIt(const char* m)
    {
        return (*m) ? mix(*m, hashIt(m + 1)) : 0;
    }

g++는 다음을 반환합니다.

main2.cpp:3:19: error: expected ';' after top level declarator
uint64_t constexpr mix(char m, uint64_t s)
                  ^
                  ;
1 error generated.

Debian은 물론 다른 배포판에서도 완벽하게 작동합니다.

답장을 보내주셔서 감사합니다!

편집: brew install gcc패키지를 성공적으로 실행하고 설치했습니다. 그러나 일반적인 디렉토리( /usr/local/bin, /usr/local/Cellar.) 에는 없습니다 .

답변1

Homebrew 패키지 관리자를 사용하여 macOS에 GNU Compiler Collection(GCC)을 설치하면 실행 파일 brew install gccg++호출되며 g++-11여기에는 11최신 버전의 GCC에 해당하는 숫자가 포함됩니다.

brew install gcc@9이는 예를 들어 버전 9를 설치하여 여러 버전의 GCC를 동시에 설치할 수 있도록 하고 g++Apple 별칭을 숫자 없이 유지할 수 있도록 하기 위한 것입니다 clang++.

따라서 귀하의 경우 gcc패키지를 설치하고 g++-11C++로 컴파일하면 clang++macOS의 컴파일러에서 코드가 지원되지 않습니다.

관련 정보