2008-08-28 41 views
6

Nhóm sản phẩm tôi làm việc hiện đang sử dụng gcc 3.4.6 (chúng tôi biết nó là cổ đại) cho một cơ sở mã c cấp thấp lớn và muốn nâng cấp lên phiên bản mới hơn. Chúng tôi đã thấy lợi ích hiệu suất thử nghiệm các phiên bản khác nhau của gcc 4.x trên tất cả các nền tảng phần cứng mà chúng tôi đã thử nghiệm trên. Tuy nhiên, chúng tôi là rất sợ lỗi c-trình biên dịch (vì lý do chính đáng trong lịch sử) và tự hỏi liệu có ai có thông tin chi tiết về phiên bản nào chúng tôi nên nâng cấp lên không.Phiên bản 4.x nào của gcc nên sử dụng?

Những người đang sử dụng 4.3.2 cho các cơ sở mã lớn và có cảm thấy rằng nó hoạt động tốt không?

Trả lời

4

Kiểm soát chất lượng tốt nhất cho gcc là hạt nhân Linux. GCC là trình biên dịch lựa chọn về cơ bản tất cả các chương trình C/C++ nguồn mở lớn. Một phát hành GCC, đặc biệt là một trong những giống như 4.3.X, mà là trong distro Linux lớn, nên được khá tốt.

GCC 4.3 cũng hỗ trợ tốt hơn cho tối ưu hóa trên CPU mới hơn.

1

Tôi không có phiên bản cụ thể cho bạn, nhưng tại sao không cài đặt 4.X 3.4.6? Sau đó, bạn có thể thử và giữ mã biên dịch trên cả hai phiên bản và nếu bạn chạy qua một lỗi dừng hiển thị trong 4, bạn có chính sách thoát.

0

Nếu bạn quan tâm đến OpenMP thì bạn sẽ cần chuyển sang gcc 4.2 hoặc cao hơn. Chúng tôi đang sử dụng 4.2.2 trên cơ sở mã khoảng 5 triệu dòng và không gặp bất kỳ vấn đề gì với nó.

4

Khi tôi di chuyển một dự án từ GCC 3 sang GCC 4, tôi đã chạy một số kiểm tra để đảm bảo rằng hành vi giống nhau trước và sau. Bạn có thể chạy một tập hợp các thử nghiệm (hy vọng tự động) để xác nhận hành vi đúng không? Sau khi tất cả, bạn muốn hành vi "đúng", không nhất thiết phải là hành vi GCC 3.

0

Tôi không thể nói gì về 4.3.2, nhưng máy tính xách tay của tôi là một hệ thống Gentoo Linux được xây dựng với GCC 4.3. {0,1} (tùy thuộc vào mỗi gói được xây dựng) và tôi chưa thấy bất kỳ các vấn đề. Điều này chủ yếu chỉ là sử dụng máy tính để bàn tiêu chuẩn, mặc dù. Nếu bạn có bất kỳ mã lạ nào, số dặm của bạn có thể thay đổi.

1

Sử dụng phiên bản mới nhất, nhưng tìm hiểu và hiểu mỗi cảnh báo -Wall cung cấp. Để có thêm niềm vui, có nhiều cờ cảnh báo hơn cho frob. Bạn do có một bộ kiểm tra hồi quy rộng lớn (và các thử nghiệm khác), chạy tất cả và kiểm tra chúng.

GCC (đặc biệt là C++, nhưng cũng C) đã thay đổi khá nhiều. Nó phân tích và tối ưu hóa mã tốt hơn nhiều, và xử lý mã hóa ra để gọi ra bahaviiour không xác định khác nhau. Vì vậy, mã mà "làm việc tốt" nhưng thực sự đã dựa vào một số giải thích cụ thể của các công trình xây dựng không hợp lệ có thể sẽ phá vỡ. Hy vọng rằng làm cho trình biên dịch phát ra một cảnh báo hoặc lỗi, nhưng không đảm bảo may mắn như vậy.

Các vấn đề liên quan