GCC поддерживает достаточное обширное количество опций, позволяющих управлять процессом компиляции практически на каждом шаге. Программисту не обязательно знать все опции, однако иметь под рукой их список бывает полезным.

Общие опцииПравить

@file - считать опции из файла file

-x language - принудительно установить язык программирования language, полезно в том случае, когда расширение файла не соответствует общепринятому. В качестве language могут быть none, ada, assembler, c, c++, f77, f95, go, java, objective-c, objective-c++, и некоторые другие варианты, такие как assembler-with-cpp.

-o file - вывести результат работы, будь то готовая программа или файл препроцессора, в файл file. -c - прервать работу GCC после компиляции. -E - прервать работу GCC после препроцессинга. -S - прервать работу GCC после компиляции. Выходом компилятора будет ассемблерный код. -v - печатать команды, которые исполняет GCC, а также его версию.

--help - вывести основную справку. --help -v - вывести расширенную справку. --target-help - справка по аппаратно-зависимым опциям. --version - вывести версию GCC.

ОптимизацияПравить

Чаще всего достаточно включить -O2 или еще какую-нибудь короткую опцию, но иногда приходится включать оптимизации и отдельно, не все из них всегда полезны.

Опция Описание Уровень оптимизации
-fno-defer-pop Убирать с стека аргументы функции сразу после исполнения функции -O1
-fforward-propagate Попытаться упрощать пары инструкций -O1
-fauto-inc-dec Использует машинные инструкции инкремента и декремента, если таковые присутствуют -O1
-fbranch-count-reg Не использовать инструкции, одновременно выполняющие декремент и переход по адресу, а генерировать последовательность инструкций, выполняющих данные действия -O1
-fcombine-stack-adjustments Попытаться оптимизировать операции с стеком (такие, как push и pop) -O1
-fcompare-elim Попытаться избегать условных инструкций, которые обращаются к флагам процессора -O1
-fcprop-registers -O1