문제

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

대규모 코드 기반에 4.3.2를 사용하고 있으며 제대로 작동한다고 생각합니까?

도움이 되었습니까?

해결책

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

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

다른 팁

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

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

최신 코드를 사용하되 라코 디스 태그 코드가 제공하는 모든 경고를 찾아 이해 하세요.추가 재미를 위해 더 많은 경고 플래그가 있습니다.광범위한 회귀 (및 기타) 테스트를 하고 가지고 있으며 모두 실행하고 확인합니다.

GCC (특히 C ++뿐만 아니라 C)도 상당히 변경되었습니다.훨씬 더 나은 코드 분석 및 최적화를 수행하고 정의되지 않은 bahaviiour를 다르게 호출하는 코드를 처리합니다.따라서 "잘 작동"했지만 실제로는 유효하지 않은 구성에 대한 특정 해석에 의존 한 코드가 손상 될 수 있습니다.컴파일러가 경고 나 오류를 내길 바라지 만 그런 행운을 보장하지는 않습니다.

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

4.3.2에 대해 아무 말도 할 수 없지만 제 노트북은 GCC 4.3으로 구축 된 Gentoo Linux 시스템입니다. {0,1} (각 패키지가 구축 된시기에 따라 다름) 문제가 전혀 없습니다..그러나 이것은 대부분 표준 데스크톱 사용입니다.이상한 코드가 있으면 마일리지가 다를 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top