2008-08-28 11 views
6

내가 사용하는 제품 그룹은 현재 대규모 저수준 c- 코드 기반에 대해 gcc 3.4.6 (고대 것으로 알고 있음)을 사용하고 있으며 이후 버전으로 업그레이드하려고합니다. 우리는 테스트 한 모든 하드웨어 플랫폼에서 gcc 4.x의 다른 버전을 테스트 할 때 성능상의 이점을 보았습니다. 우리는 그러나 매우 c 컴파일러 버그 (역사적으로 좋은 이유로)의 무서워하고, 누군가가 우리가 어떤 버전으로 업그레이 드해야하는지 통찰력을 가지고 있는지 궁금해.어떤 gcc 버전을 사용해야합니까?

큰 코드베이스에 4.3.2를 사용하는 사람들이 잘 작동한다고 생각합니까?

답변

4

gcc를위한 최상의 품질 관리는 리눅스 커널입니다. GCC는 기본적으로 모든 주요 오픈 소스 C/C++ 프로그램을위한 컴파일러입니다. 릴리스 된 GCC, 특히 주요 Linux 배포판에있는 4.3.X와 같은 하나의 패키지는 꽤 좋을 것입니다.

또한 GCC 4.3은 최신 CPU에서 최적화를 더 잘 지원합니다.

1

특정 버전이 없지만 4.X 3.4.6이 설치되어 있지 않은 이유는 무엇입니까? 그런 다음 두 버전 모두에서 코드를 컴파일하고 유지할 수 있으며, 4에서 쇼 중지 버그를 실행하는 경우 종료 정책이 있습니다.

0

OpenMP에 관심이 있다면 gcc 4.2 이상으로 이동해야합니다. 우리는 약 5M 라인의 코드베이스에서 4.2.2를 사용하고 있으며 아무런 문제가 없습니다.

4

프로젝트를 GCC 3에서 GCC 4로 마이그레이션 할 때 몇 가지 테스트를 실행하여 동작이 전후로 동일하게 수행되는지 확인했습니다. 올바른 동작을 확인하기 위해 일련의 테스트 (희망적으로 자동화 된 테스트)를 실행할 수 있습니까? 결국 GCC 3 동작이 아닌 "올바른"동작이 필요합니다.

0

4.3.2에 대해서는 말할 수 없지만 내 랩탑은 GCC 4.3. {0,1} (각 패키지가 빌드 된 시점에 따라 다름)로 빌드 된 Gentoo Linux 시스템이며 아무 것도 보지 못했습니다. 문제. 그러나 이것은 대부분 표준 데스크톱 사용에 불과합니다. 이상한 코드가 있으면 마일리지가 다를 수 있습니다.

1

최신 정보를 사용하십시오. 번을 각각 -Wall 번으로 알려줍니다. 재미를 더하기 위해 frob에 더 많은 경고 플래그가 있습니다. 에는 다양한 회귀 테스트 (및 기타 테스트)가 있으며 모두 실행하여 확인하십시오.

GCC (특히 C++뿐만 아니라 C)도 꽤 많이 변경되었습니다. 훨씬 더 나은 코드 분석 및 최적화를 수행하고 정의되지 않은 코드를 다르게 호출하는 코드를 처리합니다. 따라서 "잘 작동했지만"실제로 잘못된 구성에 대한 특정 해석에 의존하는 코드는 아마도 손상 될 것입니다. 바라건대 컴파일러를 만들면 경고 또는 오류가 발생하지만 이러한 행운은 보장되지 않습니다.

관련 문제