Sierra 업데이트 후 g ++ 컴파일러가 작동하지 않습니다.


0

이 튜토리얼에 따라 gcc / g ++를 얼마 전에 설치했습니다 (버전 6.2). 이제 Sierra로 업데이트 했으므로 더 이상 컴파일되지 않습니다.

버전을 확인할 때 올바르게 응답합니다.

g++ --version

g++ (GCC) 6.2.0
Copyright (C) 2016 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.

그러나 컴파일 오류가없는 코드를 컴파일하려고하면 (cpp.sh와 같은 온라인 컴파일러를 사용하려고 시도했지만 성공적으로 컴파일되었습니다)이 이상한 메시지를 (가독성을 위해 이미지로) 출력합니다.

여기에 이미지 설명을 입력하십시오

어떤 제안?

답변:


0

이 문제는 GNU C ++ 컴파일러와 Clang 어셈블러를 결합한다는 사실에서 비롯됩니다.

Clang 어셈블러에서는 새 섹션 이름을 사용할 것으로 예상하고 더 이상 사용되지 않는 이름을 사용하고 있음을 경고합니다.

그러나 이는 경고 일뿐입니다. 당신은 그들을 무시할 수 있으며 프로그램은 이전과 같이 작동합니다.

옵션은 기본적으로 다음과 같습니다.

  1. 경고를 무시하십시오

  2. 버그 리포트 에있는 패치로 g ++ 패치

  3. 다른 어셈블러 사용

또는 직접 컴파일하는 대신 시스템 제공 C ++ 컴파일러를 사용할 수 있습니다.


설명에 감사드립니다. 마침내 그 경고의 의미를 이해했습니다. 당신이 말했듯이, 나는 파일을 무시할 수 있으며,이 명령을 사용하여 다른 대답 (안타깝게도 링크를 기억하지 못함)에서 경고를 생략하는 방법을 찾았습니다. g++ program_to_compile.cpp 2>&1 >/dev/null | grep -v -e '^/var/folders/*' -e '^[[:space:]]*\.section' -e '^[[:space:]]*\^[[:space:]]*~*' 그러나 g ++도 패치하고 싶습니다. 제공하신 링크를 확인했지만 어떻게해야할지 모르겠습니다. 어떻게해야하는지 알려줄 수 있습니까?
Miguel Péres

1
이 명령은 화면에 출력되는 내용에서 경고를 필터링합니다. 경고는 여전히 표시되어 있지만 표시되지 않습니다. 패치 관련-터미널을 열고 "man patch"를 실행하여 패치 매뉴얼 페이지를 표시하십시오. 알아야 할 내용을 설명해야합니다. 그렇지 않은 경우 자체 컴파일러를 패치하려고 시도하지 않는 것이 좋습니다. 경고 메시지를 설명하고 해결책을 제시 한 경우 답변을 수락 된 것으로 표시하십시오.
jksoegaard

예, 이것은 필터 일뿐입니다. 나는 설명서를 볼 것입니다, 감사합니다!
Miguel Péres
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.