Какую версию gcc 4.x следует использовать?

StackOverflow https://stackoverflow.com/questions/32448

  •  09-06-2019
  •  | 
  •  

Вопрос

Группа продуктов, в которой я работаю, в настоящее время использует gcc 3.4.6 (мы знаем, что он древний) для большой низкоуровневой базы c-кода и хочет обновиться до более поздней версии.Мы увидели преимущества в производительности, тестируя различные версии gcc 4.x на всех аппаратных платформах, на которых мы его тестировали.Однако мы очень боюсь ошибок c-компилятора (по уважительной исторической причине) и задаюсь вопросом, есть ли у кого-нибудь представление о том, до какой версии нам следует обновиться.

Используют ли люди 4.3.2 для больших кодовых баз и чувствуют ли, что это работает нормально?

Это было полезно?

Решение

Лучшим средством контроля качества для gcc является ядро linux.GCC является предпочтительным компилятором практически для всех основных программ на C / C ++ с открытым исходным кодом.Выпущенный GCC, особенно такой, как 4.3.X, который есть в основных дистрибутивах Linux, должен быть довольно хорошим.

GCC 4.3 также имеет лучшую поддержку оптимизации на более новых процессорах.

Другие советы

Когда я перенес проект с GCC 3 на GCC 4, я провел несколько тестов, чтобы убедиться, что поведение было одинаковым до и после.Можете ли вы просто запустить набор тестов (надеюсь, автоматизированных), чтобы подтвердить правильное поведение?В конце концов, вам нужно "правильное" поведение, не обязательно поведение GCC 3.

У меня нет конкретной версии для вас, но почему бы не иметь 4.X и 3.4.6 установлен?Затем вы могли бы попытаться сохранить компиляцию кода в обеих версиях, и если вы столкнетесь с ошибкой остановки показа в 4, у вас есть политика выхода.

Используйте последнюю версию, но выследить и понять каждое предупреждение -Wall дает.Для дополнительного удовольствия можно установить дополнительные предупреждающие флажки frob.Ты делай подготовьте обширный набор регрессионных (и других) тестов, запустите их все и проверьте.

GCC (особенно C ++, но также и C) сильно изменился.Он намного лучше анализирует и оптимизирует код и обрабатывает код, который, как выясняется, вызывает неопределенный bahaviiour по-другому.Таким образом, код, который "работал нормально", но на самом деле полагался на какую-то конкретную интерпретацию недопустимых конструкций, вероятно, сломается.Надеюсь, компилятор выдаст предупреждение или ошибку, но никакой гарантии такой удачи нет.

Если вас интересует OpenMP, то вам нужно будет перейти на gcc 4.2 или более позднюю версию.Мы используем 4.2.2 на базе кода длиной около 5 миллионов строк, и у нас не возникает никаких проблем с этим.

Я ничего не могу сказать о 4.3.2, но мой ноутбук - это система Gentoo Linux, построенная с использованием GCC 4.3.{0,1} (в зависимости от того, когда был собран каждый пакет), и я не видел никаких проблем.Однако в основном это просто стандартное использование настольных компьютеров.Если у вас есть какой-либо странный код, ваш пробег может отличаться.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top