GCC/Опции
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 |