Изменения в gcc / постоянство флагов оптимизации gcc / C - PullRequest
0 голосов
/ 04 мая 2010

Просто любопытно. Использование gcc / gdb под Ubuntu 9.10.

Чтение книги на Си, которая также часто дает разборку объектного файла. Когда я читаю в январе, моя разборка очень похожа на разборку книги; теперь все по-другому - возможно, более оптимизировано (теперь я замечаю некоторые изменения в коде сборки, которые, по крайней мере в проверенных файлах, выглядят оптимизированными). Я использовал опции оптимизации -O1 - -O3 для gcc между первым и вторым чтением, но не перед первым.

(1) Постоянно ли используются параметры оптимизации, иначе, если вы используете их один раз, вы будете использовать их до тех пор, пока не отключите их? Это было бы странно (просматривал man-файл и, по крайней мере, ничего такого не видел). В маловероятном случае, если это правда, как вы их отключаете?

(2) Изменилась ли сборка gcc при недавнем обновлении?

(3) gcc иногда выдает (значительно) другой код сборки, хотя выбраны одинаковые параметры компиляции?

Большое спасибо.

1 Ответ

3 голосов
/ 04 мая 2010

1) Нет, параметры не сохраняются.

2) Да, оптимизаторы постоянно меняются и улучшаются. Если ваши пакеты gcc были обновлены, вполне вероятно, что сборка, созданная для определенного исходного файла, изменится.

3) Компиляция с gcc - это детерминированный процесс; если вы компилируете один и тот же исходный код с одинаковой версией gcc и одинаковыми параметрами для одной и той же цели, то полученная сборка должна быть одинаковой (по модулю некоторых имен символов).

...