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