나는 한동안 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 gcc
이 g++
호출되며 g++-11
여기에는 11
최신 버전의 GCC에 해당하는 숫자가 포함됩니다.
brew install gcc@9
이는 예를 들어 버전 9를 설치하여 여러 버전의 GCC를 동시에 설치할 수 있도록 하고 g++
Apple 별칭을 숫자 없이 유지할 수 있도록 하기 위한 것입니다 clang++
.
따라서 귀하의 경우 gcc
패키지를 설치하고 g++-11
C++로 컴파일하면 clang++
macOS의 컴파일러에서 코드가 지원되지 않습니다.