Параметры компилятора gcc 4.3.3 включены по умолчанию

Я перешел из gcc версии 4.0.3 в 4.3.3 и понял, что -mfpmath был установлен по умолчанию в gcc 4.3.3. Это фактически вызвало ошибки в моем приложении. В 4.0.3 -mfpmath было 387.

Я хочу знать, как я могу получить все опции по умолчанию, включенные gcc для данной версии. Как я могу сбросить набор всех параметров, используемых gcc при компиляции. Это позволяет мне сравнить версию 4.0.3 и 4.3.3.

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

Ответы

Ответ 1

gcc -Q -v (входной файл)

Только с базовым крошечным файлом c или cpp в качестве входного файла. Должен предоставить вам большой список всех параметров, переданных gcc по умолчанию, один из них может привести к включению математики sse fp.

Ответ 2

В дополнение к компиляции определенного файла -Q -v, который выводит список переданных и включенных опций, а также множество других сведений о версии, конфигурации и времени, вы также можете использовать gcc -Q --help=target для простого отображения по умолчанию целевые параметры компилятора:

$ gcc --version | head -1
gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3
$ gcc -Q --help=target
The following options are target specific:
  -m128bit-long-double                  [disabled]
  -m32                                  [disabled]
  -m3dnow                               [disabled]
  -m3dnowa                              [disabled]
  -m64                                  [enabled]
  -m80387                               [enabled]
  -m8bit-idiv                           [disabled]
  -m96bit-long-double                   [enabled]
  -mabi=
  -mabm                                 [disabled]
  -maccumulate-outgoing-args            [disabled]
  -maes                                 [disabled]
  -malign-double                        [disabled]
  -malign-functions=
  -malign-jumps=
  -malign-loops=
  -malign-stringops                     [enabled]
  -mandroid                             [disabled]
  -march=                               x86-64
...

Чтобы также включить список целевых ассемблерных и компоновщиков (но не в настоящее время их настройки по умолчанию), используйте --target-help вместо --help=target.

Ответ 3

  • В версии, приведенной здесь gcc 4.3.3, нет такого поведения, о котором вы жалуетесь. Я сам скомпилировал его, поэтому я уверен, что есть другая причина для изменения, которое вы видите, чем просто версия gcc (например, компиляция для 64-битного, которая всегда использовала sse AFAIR).

  • В gcc есть заметки о выпуске, которые уведомляют о поведении. Они упакованы в дистрибутив источника gcc и доступны в Интернете. Для gcc 4.3 см. http://gcc.gnu.org/gcc-4.3/changes.html.

Ответ 4

В дополнение к -Q --help=target для целевых опций вы можете использовать -Q -O<n> --help=optimize для отображения того, какие пропуска оптимизатора включены или выключены на заданном уровне оптимизации. -Q также работает сам по себе с другими аргументами --help=<blah>.