2011-12-29 2 views
4

C++ 2011에서 연주하고 싶기 때문에 아직 출시되지 않은 gcc 4.7이 필요합니다. 나는 svn 트렁크를 성공적으로 가져 와서 컴파일 할 수있었습니다.gcc 버전을 올바르게 전환하는 방법은 무엇입니까?

보안을 위해 시스템의 기본 gcc를 유지하고자하므로 - prefix으로 gcc4.7을 구성하고 비표준 위치에 설치했습니다.

이제 gcc 4.7을 내 시스템의 기본 gcc보다 어떻게 활성화해야합니까?

나는 이미 내가 GCC 4.7 빈 첫 디렉토리에 가리 키도록 내 PATH를 업데이트 CCCXX 변수를 변경했습니다. gcc --version을 입력하면 4.7을 얻습니다.

하지만 gcc는 단순한 실행 파일 그 이상입니다. gcc 설치 디렉토리에는 많은 실행 파일이 있습니다. 기본 포함 및 표준 lib C++도 있습니다.

지금까지, 모든 블로그 항목/SO 나는이 주제에 발견 질문 만 GCC그램 ++ 실행 파일에 대해 말한다.

사람은 나에게 내가 완전히 GCC 4.7을 사용하는 환경에해야 할 변화의 목록을 줄 수 있습니까? LD_LIBRARY_PATH를 업데이트 하시겠습니까? gcc 4.7 시스템에 우선 순위를 부여하는 방법은 무엇입니까? 고려해야 할 다른 사항이 있습니까?

미리 감사드립니다.

+2

GCC FAQ에 응답 : http://gcc.gnu.org/faq.html # multiple –

+0

gcc 4.7로 컴파일 한 후 이상한 segfault를 경험했습니다. 그래서 제가 놓친 정보를 요구하고 있습니다. 따라서 내 질문에 "적절하게" – Offirmo

답변

1

가장 간단한 대답은 다음과 같습니다. 그냥 작동합니다. : GCC는이 두 번째 "접두사 '에서 자신에게 먼저 상대를 필요로 무엇을 발견

그것은, 그리고 마지막으로 표준 장소에서 구성되었다. 즉, 을 모두 재배치하는 한 원하는 위치로 옮기는 것이 안전합니다. 그러나 설치가 불완전한 경우 폴백 (fall back) 동작은 손상을 숨길 수 있습니다.

+0

그래, 내가 겪고있는 문제가 다른 것에서 오는 것 같아. 다시 시도 할 것입니다. – Offirmo

0

GCC Configuration docs을 살펴보십시오. 다른 GCC 버전을 구별하기 위해 프로그램 접미사를 사용하고 있습니다. 이를 수행하려면 을 ./configure 호출에 추가하십시오.

2

은 내가 g을 ++ 거의 C 라이브러리가 시스템에 휩쓸 리게되는 사물은 C++을 사용하여 휩쓸 리게하고 있다고 생각 것입니다! C++ 라이브러리 클래스에서 레이아웃을 변경하면 다른 C++ 프로그램이나 라이브러리와 호환되지 않습니다. 따라서 필자는 시스템의 C++ 컴파일러 또는 더 중요한 것은 표준 C++ 라이브러리를 대체하지 않을 것입니다 (컴파일러 공급 업체가 대체하려는 버전과 이진 호환성을 유지했다는 강한 주장을하지 않는 한).

다른 버전의 g ++를 재생하거나 사용하려면 프리픽스 접근 방식을 사용하는 것이 좋습니다. 모든 컴파일러 관련 도구는 암시 적으로 g ++에서 적절한 버전을 사용하여 호출되며 ar, ld, ranblib 등과 같은 도구는 실제로 컴파일러 버전에 의존하지 않습니다. 내부적으로 사용되는 중요한 구성 요소는 표준 라이브러리 (헤더와 라이브러리 모두)와 전 처리기입니다. g ++ 버전을 호출 할 때 실제로 필요한 것이 무엇인지 파악합니다.

현재 C++ 2011에서 게임을하고 싶을 때 clang을 볼 수도 있습니다.

+0

감사합니다, 나는 clang을 시도했지만 충돌을 일으키는 코드에서 오류를 발견하지 못했습니다. gcc는 문제를 간략히 설명하는 컴파일 오류로 즉시 발견했습니다. 나는 gcc를 고수하고있다. clang과 gcc 사이를 전환하는 것은 두 gcc 사이를 전환하는 것보다 쉽습니다. – Offirmo

관련 문제