3.2 Опции управления типом вывода
Компиляция может включать до четырёх этапов: предобработку, саму компиляцию, сборку и компоновку, всегда в таком порядке. GCC может выполнять предобработку и компиляцию нескольких файлов, либо в несколько входных файлов для ассемблера, либо в один входной файл для ассемблера; затем каждый входной файл ассемблера создаёт файл объекта, а компоновка объединяет все файлы объектов (те, что были недавно скомпилированы, и те, что указаны как входные) в исполняемый файл.
Для любого данного входного файла суффикс имени файла определяет, какой тип компиляции выполняется:
file.c-
Исходный код на языке C, который должен быть подвергнут предобработке.
file.i-
Исходный код на языке C, который не должен подвергаться предобработке.
file.ii-
Исходный код на языке C++, который не должен подвергаться предобработке.
file.m-
Исходный код на языке Objective-C. Обратите внимание, что для работы программы на Objective-C необходимо связать её с библиотекой libobjc.
file.mi-
Исходный код на языке Objective-C, который не должен подвергаться предобработке.
file.mmfile.M-
Исходный код на языке Objective-C++, Обратите внимание, что для работы программы на Objective-C++ необходимо связать её с библиотекой libobjc. Обратите внимание, что ‘.M’ означает букву М в верхнем регистре.
file.mii-
Исходный код на языке Objective-C++, который не должен подвергаться предобработке.
file.h-
Файл заголовка на языке C, C++, Objective-C или Objective-C++, который должен быть преобразован в предварительно скомпилированный заголовок (по умолчанию), или файл заголовка на языке C или C++, который должен быть преобразован в спецификацию Ada (через опцию -fdump-ada-spec).
file.ccfile.cpfile.cxxfile.cppfile.CPPfile.c++file.C-
Исходный код на языке C++, который должен быть подвергнут предобработке. Обратите внимание, что в ‘.cxx’ обе последние буквы должны быть буквально ‘x’. Аналогично, ‘.C’ означает букву C в верхнем регистре.
file.mmfile.M-
Исходный код на языке Objective-C++, который должен быть подвергнут предобработке.
file.mii-
Исходный код на языке Objective-C++, который не должен подвергаться предобработке.
file.hhfile.Hfile.hpfile.hxxfile.hppfile.HPPfile.h++file.tcc-
Файл заголовка на языке C++, который должен быть преобразован в предварительно скомпилированный заголовок или спецификацию Ada.
file.ffile.forfile.ftn-
Исходный код на языке Fortran с фиксированной формой, который не должен подвергаться предобработке.
file.Ffile.FORfile.fppfile.FPPfile.FTN-
Исходный код на языке Fortran с фиксированной формой, который должен быть подвергнут предобработке (с традиционным препроцессором).
file.f90file.f95file.f03file.f08-
Исходный код на языке Fortran со свободной формой, который не должен подвергаться предобработке.
file.F90file.F95file.F03file.F08-
Исходный код на языке Fortran со свободной формой, который должен быть подвергнут предобработке (с традиционным препроцессором).
file.go-
Исходный код на языке Go.
file.d-
Исходный код на языке D.
file.di-
Файл интерфейса языка D.
file.dd-
Код документации языка D (Ddoc).
file.ads-
Файл исходного кода на языке Ada, содержащий объявление единицы библиотеки (объявление пакета, подпрограммы или обобщённого типа, или экземпляра обобщённого типа), или объявление переименования единицы библиотеки (объявление переименования пакета, обобщённого типа или подпрограммы). Такие файлы также называются спецификациями.
file.adb-
Файл исходного кода на языке Ada, содержащий тело единицы библиотеки (тело подпрограммы или пакета). Такие файлы также называются телами.
file.s-
Код ассемблера.
file.Sfile.sx-
Код ассемблера, который должен быть подвергнут предобработке.
otherФайл объекта, который должен быть передан напрямую в компоновщик. Любой файл с именем без распознаваемого суффикса обрабатывается таким образом.
Вы можете явно указать язык с помощью опции -x:
-x language-
Явно укажите язык для следующих входных файлов (вместо того, чтобы позволить компилятору выбрать значение по умолчанию на основе суффикса имени файла). Эта опция применяется ко всем последующим входным файлам до следующей опции -x. Возможные значения для язык:
c c-header cpp-output c++ c++-header c++-system-header c++-user-header c++-cpp-output objective-c objective-c-header objective-c-cpp-output objective-c++ objective-c++-header objective-c++-cpp-output assembler assembler-with-cpp ada d f77 f77-cpp-input f95 f95-cpp-input go
-x noneОтключить указание языка, так что последующие файлы обрабатываются в соответствии с их суффиксами имён файлов (как если бы опция -x вообще не использовалась).
Если вы хотите выполнить только некоторые стадии компиляции, вы можете использовать -x (или суффиксы имён файлов), чтобы указать gcc с какой стадии начать, и одну из опций -c, -S или -E, чтобы указать, на какой стадии gcc остановиться. Обратите внимание, что некоторые комбинации (например, ‘-x cpp-output -E’) инструктируют gcc ничего не делать.
-c-
Компилировать или ассемблировать исходные файлы, но не линковать. Этап линковки просто не выполняется. Конечным результатом является файл-объект для каждого исходного файла.
По умолчанию имя файла-объекта для исходного файла формируется заменой суффикса «.c», «.i», «.s» и т. д. на «.o».
Нераспознанные входные файлы, не требующие компиляции или ассемблирования, игнорируются.
-S-
Остановиться после этапа компиляции; не ассемблировать. Результатом является файл кода ассемблера для каждого входного файла, не являющегося файлом ассемблера.
По умолчанию имя файла ассемблера для исходного файла формируется заменой суффикса «.c», «.i» и т. д. на «.s».
Входные файлы, которые не требуют компиляции, игнорируются.
-E-
Остановиться после этапа предварительной обработки; не запускать собственно компилятор. Результатом является предварительно обработанный исходный код, который отправляется в стандартный вывод.
Входные файлы, которые не требуют предварительной обработки, игнорируются.
-o file-
Разместить основной вывод в файле file. Это относится к любому виду вывода, будь то исполняемый файл, файл-объект, файл ассемблера или предварительно обработанный код C.
Если -o не указан, по умолчанию исполняемый файл размещается в a.out, файл-объект для source.suffix — в source.o, файл ассемблера — в source.s, предварительно скомпилированный заголовочный файл — в source.suffix.gch, а весь предварительно обработанный C-исходный код — в стандартный вывод.
Хотя -o задает только основной вывод, он также влияет на имена вспомогательных и выходных файлов отладки. Смотрите примеры ниже. Если не переопределено, вспомогательные и выходные файлы отладки размещаются в той же директории, что и основной вывод. Во вспомогательных файлах суффикс входного файла заменяется суффиксом типа вспомогательного файла; в файлах отладки суффикс файла отладки добавляется к суффиксу входного файла. В командах компиляции базовое имя как вспомогательных, так и отладочных выходов совпадает с основным выводом; в командах компиляции и линковки имя основного вывода, за вычетом суффикса исполняемого файла, объединяется с именем входного файла. Если оба имеют одинаковое базовое имя, не учитывая суффикс, результатом объединения является это базовое имя, в противном случае они конкатенируются, разделенные дефисом.
gcc -c foo.c ...
будет использовать foo.o в качестве основного вывода и размещать вспомогательные и отладочные выводы рядом с ним, например, вспомогательный файл foo.dwo для -gsplit-dwarf и отладочный файл foo.c.???r.final для -fdump-rtl-final.
Если явно указан файл не-линкера, вспомогательные и отладочные файлы по умолчанию имеют одинаковое базовое имя:
gcc -c foo.c -o dir/foobar.o ...
будет называть вспомогательные выходы dir/foobar.* и отладочные выходы dir/foobar.c.*.
Для вывода линковщика вспомогательные и отладочные выходы будут иметь префикс:
gcc foo.c bar.c -o dir/foobar ...
обычно будет называть вспомогательные выходы dir/foobar-foo.* и dir/foobar-bar.*, а отладочные выходы — dir/foobar-foo.c.* и dir/foobar-bar.c.*.
Исключением из вышесказанного является случай, когда исполняемый файл имеет одинаковое базовое имя с единственным входом:
gcc foo.c -o dir/foo ...
в этом случае вспомогательные выходы называются dir/foo.*, а отладочные выходы — dir/foo.c.*.
Расположение и имена вспомогательных и отладочных выходов можно настроить с помощью опций -dumpbase, -dumpbase-ext, -dumpdir, -save-temps=cwd и -save-temps=obj.
-dumpbase dumpbase-
Эта опция устанавливает базовое имя для вспомогательных и отладочных файлов вывода. Она не влияет на имя основного выходного файла. Промежуточные выходы, когда сохраняются, не считаются основными, а вспомогательными:
gcc -save-temps -S foo.c
сохраняет (прекративший быть временным) предварительно обработанный файл в foo.i, а затем компилирует во (предполагаемый) выходной файл foo.s, тогда как:
gcc -save-temps -dumpbase save-foo -c foo.c
преобразует в save-foo.i, компилирует в save-foo.s (теперь промежуточный, следовательно, вспомогательный вывод) и затем ассемблирует в (предполагаемый) выходной файл foo.o.
Без этой опции файлы отладки и вспомогательные файлы получают свои имена от входного файла или от файла (не линковщика) вывода, если он указан явно: файлы отладки (например, те, которые запрошены опциями -fdump-*) с суффиксом имени входного файла и вспомогательные файлы (запрошенные другими неотладочными опциями, например
-save-temps,-gsplit-dwarf,-fcallgraph-info) без него.Аналогичное различие суффиксов для файлов отладки и вспомогательных файлов может быть достигнуто для явно заданного -dumpbase basename.suf путем также указания -dumpbase-ext .suf.
Если dumpbase явно указан с любым компонентом каталога, любое указание dumppfx (например, -dumpdir или -save-temps=*) игнорируется, и вместо добавления к нему dumpbase полностью его заменяет:
gcc foo.c -c -o dir/foo.o -dumpbase alt/foo \ -dumpdir pfx- -save-temps=cwd ...
создает вспомогательные и отладочные выходы, имеющие имя alt/foo.*, игнорируя dir/ в -o, префикс ./, подразумеваемый -save-temps=cwd, и pfx- в -dumpdir.
Когда -dumpbase указан в команде, которая компилирует несколько входов или компилирует и затем линковывает, он может быть объединён с dumppfx, как указано в -dumpdir. Тогда каждый входной файл компилируется, используя объединённый dumppfx, и вычисляются значения по умолчанию для dumpbase и auxdropsuf для каждого входного файла:
gcc foo.c bar.c -c -dumpbase main ...
создает foo.o и bar.o в качестве основных выходов и избегает перезаписи вспомогательных и отладочных выходов, используя dumpbase в качестве префикса, создавая вспомогательные и отладочные выходы с именем main-foo.* и main-bar.*.
Пустая строка, указанная как dumpbase, избегает влияния имени выходного файла на имена вспомогательных и отладочных выходов при компиляции, вычисляя значения по умолчанию:
gcc -c foo.c -o dir/foobar.o -dumpbase '' ...
будет называть вспомогательные выходы dir/foo.* и отладочные выходы dir/foo.c.*. Обратите внимание, как их базовые имена взяты из имени входного файла, но каталог по-прежнему по умолчанию совпадает с каталогом вывода.
Пустой dumpbase не препятствует использованию имени выходного файла для выходов при линковке:
gcc foo.c bar.c -o dir/foobar -dumpbase '' -flto ...
компиляция исходных файлов назовёт вспомогательные выходы dir/foo.* и dir/bar.*, а отладочные выходы — dir/foo.c.* и dir/bar.c.*. LTO-перекомпиляция во время линковки будет использовать dir/foobar. в качестве префикса для файлов отладки и вспомогательных файлов.
-dumpbase-ext auxdropsuf-
При формировании имени вспомогательного (но не отладочного) выходного файла, удалите заключительный auxdropsuf из dumpbase перед добавлением любых суффиксов. Если не указано, эта опция по умолчанию имеет суффикс значения по умолчанию dumpbase, т. е. суффикс входного файла, когда -dumpbase не присутствует в командной строке, или dumpbase комбинируется с dumppfx.
gcc foo.c -c -o dir/foo.o -dumpbase x-foo.c -dumpbase-ext .c ...
создает dir/foo.o как основной вывод и генерирует вспомогательные выводы в dir/x-foo.*, принимая местоположение основного вывода и удаляя суффикс .c из dumpbase. Отладочные выводы сохраняют суффикс: dir/x-foo.c.*.
Эта опция игнорируется, если она не соответствует суффиксу указанного dumpbase, за исключением альтернативного использования суффикса исполняемого файла при добавлении имени базового выходного линковщика к dumppfx, как указано ниже:
gcc foo.c bar.c -o main.out -dumpbase-ext .out ...
создаёт main.out как основной вывод и избегает перезаписи вспомогательных и отладочных выходов, используя имя исполняемого файла без auxdropsuf в качестве префикса, создавая вспомогательные выходы с именем main-foo.* и main-bar.*, а отладочные выходы с именами main-foo.c.* и main-bar.c.*.
-dumpdir dumppfx
-
При формировании имени вспомогательного или выходного файла дампа используйте dumppfx в качестве префикса:
gcc -dumpdir pfx- -c foo.c ...
создаёт foo.o в качестве основного вывода и вспомогательные выводы с именем pfx-foo.*, объединяя заданный dumppfx со стандартным dumpbase, полученным из стандартного основного вывода, в свою очередь полученного из имени входного файла. Выводы дампа также принимают суффикс имени входного файла: pfx-foo.c.*.
Если dumppfx должен использоваться как имя каталога, он должен заканчиваться разделителем каталога:
gcc -dumpdir dir/ -c foo.c -o obj/bar.o ...
создаёт obj/bar.o в качестве основного вывода и вспомогательные выводы с именем dir/bar.*, объединяя заданный dumppfx со стандартным dumpbase, полученным из имени основного вывода. Выводы дампа также принимают суффикс имени входного файла: dir/bar.c.*.
По умолчанию он устанавливается в местоположение выходного файла, если выходной файл не является специальным файлом, таким как
/dev/null. Опции -save-temps=cwd и -save-temps=obj переопределяют это значение по умолчанию, так же как и явная опция -dumpdir. В случае указания нескольких таких опций действует последняя:gcc -dumpdir pfx- -c foo.c -save-temps=obj ...
выводит foo.o со вспомогательными выводами с именем foo.*, потому что -save-temps=* переопределяет dumppfx, заданный ранее опцией -dumpdir. Не имеет значения, что =obj является значением по умолчанию для -save-temps, или что каталог вывода неявно является текущим каталогом. Выводы дампа называются foo.c.*.
При компиляции из нескольких входных файлов, если указана -dumpbase, dumpbase, минус суффикс auxdropsuf и дефис добавляются к (или переопределяют, если содержат компоненты каталога) явно заданному или по умолчанию dumppfx, так что каждая из нескольких компиляций получает вспомогательные и выходные файлы дампа с разными именами.
gcc foo.c bar.c -c -dumpdir dir/pfx- -dumpbase main ...
выводит вспомогательные дампы в dir/pfx-main-foo.* и dir/pfx-main-bar.*, добавляя dumpbase- к dumppfx. Выводы дампа сохраняют суффикс входного файла: dir/pfx-main-foo.c.* и dir/pfx-main-bar.c.* соответственно. Сравните с компиляцией с одним входным файлом:
gcc foo.c -c -dumpdir dir/pfx- -dumpbase main ...
что, применяя -dumpbase к одному исходному файлу, не вычисляет и не добавляет отдельный dumpbase для каждого входного файла. Его вспомогательные и выходные файлы дампа находятся в dir/pfx-main.*.
При компиляции и последующей линковке из нескольких входных файлов, заданный явно или по умолчанию dumppfx также подвергается преобразованию dumpbase (например, компиляция foo.c и bar.c выше, но без -c). Если ни -dumpdir, ни -dumpbase не заданы, имя базового выходного файла линковщика, минус auxdropsuf, если указан, или суффикс исполняемого файла в противном случае, плюс дефис добавляется к значению по умолчанию dumppfx вместо этого. Однако, в отличие от предыдущих случаев линковки:
gcc foo.c bar.c -dumpdir dir/pfx- -o main ...
не добавляет имя выходного файла main к dumppfx, так как -dumpdir задано явно. Цель состоит в том, чтобы явно заданный dumppfx мог содержать указанное имя выходного файла как часть префикса, если это необходимо; только явно заданный -dumpbase будет с ним комбинирован, чтобы избежать простого игнорирования полезной опции.
При компиляции и последующей линковке из одного входного файла имя базового выходного файла линковщика будет добавлен только к значению по умолчанию dumppfx, как указано выше, если оно не совпадает с именем базового входного файла. Это было рассмотрено в случаях линковки с одним входным файлом выше, но не с явным -dumpdir, который запрещает объединение, даже если переопределен -save-temps=*:
gcc foo.c -dumpdir alt/pfx- -o dir/main.exe -save-temps=cwd ...
Вспомогательные выводы называются foo.*, а выводы дампа foo.c.* в текущем каталоге, как в конечном счёте запрошено опцией -save-temps=cwd.
Подводя итог для интуитивного, хотя и немного неточного, потока данных: имя основного выходного файла разбивается на часть каталога и часть имени файла; dumppfx устанавливается в первую часть, если не переопределено -dumpdir или -save-temps=*, а dumpbase устанавливается во вторую, если не переопределено -dumpbase. При наличии нескольких входных файлов или линковки этот dumpbase может быть объединён с dumppfx и взят из каждого входного файла. Имена вспомогательных выходных файлов для каждого входного файла формируются путём объединения dumppfx, dumpbase минус суффикс и суффикс вспомогательного выходного файла; имена выходных файлов дампа отличаются только тем, что суффикс из dumpbase сохраняется.
Когда дело доходит до вспомогательных и выходных файлов дампа, созданных во время перекомпиляции LTO, комбинация dumppfx и dumpbase, как заданная или полученная из имени выходного файла линковщика, но не из входных файлов, даже в тех случаях, когда эта комбинация не будет использоваться иначе, передаётся с заключительной точкой, заменяющей добавленный компилятором дефис, если таковой имеется, в качестве опции -dumpdir к
lto-wrapper; участвуя в линковке, эта программа обычно не получает -dumpbase и -dumpbase-ext и игнорирует их.При запуске подкомпиляторов,
lto-wrapperдобавляет имена этапов LTO к полученному dumppfx, гарантирует, что он содержит компонент каталога, так что он переопределяет любой -dumpdir, и передаёт это как -dumpbase подкомпиляторам. -v-
Вывести (в стандартный поток ошибок) команды, исполненные для запуска этапов компиляции. Также вывести номер версии программы-драйвера компилятора и препроцессора и самого компилятора.
-###-
Как -v, за исключением того, что команды не выполняются, а аргументы приводятся в кавычки, если они не содержат только буквенно-цифровых символов или
./-_. Это полезно для скриптов оболочки для захвата сгенерированных драйвером командных строк. --help-
Вывести (в стандартный поток вывода) описание командных опций, поддерживаемых
gcc. Если также указана опция -v, то --help также передаётся различным процессам, вызваннымgcc, чтобы они могли отобразить командные опции, которые они поддерживают. Если также указана опция -Wextra (до опции --help), то также отображаются командные опции, для которых нет связанной документации. --target-help-
Вывести (в стандартный поток вывода) описание опций командной строки, специфичных для целевого компилятора. Для некоторых целей может также быть выведена дополнительная информация, специфичная для целевой среды.
--help={class|[^]qualifier}[,…]-
Вывести (в стандартный поток вывода) описание командных опций компилятора, которые подходят ко всем указанным классам и квалификаторам. Поддерживаемые классы:
- ‘optimizers’
-
Показать все опции оптимизации, поддерживаемые компилятором.
- ‘warnings’
-
Показать все опции, контролирующие сообщения об ошибках, производимые компилятором.
- ‘target’
-
Отобразить опции, специфичные для целевой среды. В отличие от опции --target-help, опции, специфичные для целевой среды, для линковщика и ассемблера, не отображаются. Это связано с тем, что эти инструменты в настоящее время не поддерживают расширенный синтаксис --help=.
- ‘params’
-
Отобразить значения, распознаваемые опцией --param.
- language
-
Показать поддерживаемые опции для language, где language — имя одного из языков, поддерживаемых в этой версии GCC. Если опция поддерживается всеми языками, необходимо выбрать класс ‘common’.
- ‘common’
Отобразить опции, общие для всех языков.
Эти квалификаторы поддерживаются:
- ‘undocumented’
-
Отобразить только те опции, которые не задокументированы.
- ‘joined’
-
Отобразить опции, принимающие аргумент, который следует за знаком равенства в одном непрерывном фрагменте текста, таком как: ‘--help=target’.
- ‘separate’
Отобразить опции, принимающие аргумент, который появляется как отдельное слово после исходной опции, например: ‘-o output-file’.
Таким образом, для отображения всех незадокументированных опций, специфичных для целевой среды, поддерживаемых компилятором, используйте:
--help=target,undocumented
Значение квалификатора можно инвертировать, добавив перед ним символ ‘^’, так например, чтобы отобразить все бинарные опции предупреждений (т.е., опции, которые либо включены, либо выключены и не принимают аргумент), у которых есть описание, используйте:
--help=warnings,^joined,^undocumented
Аргумент к --help= не должен состоять только из инвертированных квалификаторов.
Можно объединить несколько классов, хотя это обычно настолько сильно сужает вывод, что ничего не отображается. Однако один случай, где это работает, — это когда один из классов — target. Например, для отображения всех опций оптимизации, специфичных для целевой среды, используйте:
--help=target,optimizers
Опция --help= может повторяться в командной строке. Каждый последующий вызов отображает запрошенный класс опций, пропускает уже отображённые. Если --help также указано где-либо в командной строке, то это имеет приоритет над любой опцией --help=.
Если опция -Q появляется в командной строке перед опцией --help=, то описательный текст, отображаемый --help=, изменяется. Вместо описания отображаемых опций указывается, включена ли опция, выключена ли она или установлена ли она в определённое значение (при условии, что компилятор знает это в момент использования опции --help=).
Вот усечённый пример из ARM-порта
gcc:% gcc -Q -mabi=2 --help=target -c The following options are target specific: -mabi= 2 -mabort-on-noreturn [disabled] -mapcs [disabled]
Вывод чувствителен к эффектам предыдущих опций командной строки, поэтому, например, можно узнать, какие оптимизации включены при -O2, используя:
-Q -O2 --help=optimizers
Или вы можете узнать, какие двоичные оптимизации включены при -O3, используя:
gcc -c -Q -O3 --help=optimizers > /tmp/O3-opts gcc -c -Q -O2 --help=optimizers > /tmp/O2-opts diff /tmp/O2-opts /tmp/O3-opts | grep enabled
--version-
Вывести номер версии и авторские права вызываемого GCC.
-pass-exit-codes
-
Обычно программа
gccзавершается с кодом 1, если любая фаза компилятора возвращает код, отличный от успешного. Если вы укажете -pass-exit-codes, программаgccвместо этого вернёт числовой код максимальной ошибки, полученной от любой фазы, вернувшей код ошибки. Передние концы C, C++ и Fortran возвращают 4, если возникает внутренняя ошибка компилятора. -pipe-
Используйте каналы вместо временных файлов для связи между различными этапами компиляции. Это не работает на некоторых системах, где ассемблер не может читать из канала; но GNU ассемблер работает без проблем.
-specs=file-
Обработайте файл file после того, как компилятор прочитает стандартный файл specs, чтобы переопределить значения по умолчанию, которые использует программа-драйвер
gccпри определении, какие параметры передаватьcc1,cc1plus,as,ldи т. д. В командной строке можно указать более одного параметра -specs=file, и они обрабатываются в порядке следования слева направо. См. Специальные файлы для получения информации о формате файла file. -wrapper-
Вызовите все подкоманды под оболочкой программы. Имя программы оболочки и её параметры передаются как список, разделённый запятыми.
gcc -c t.c -wrapper gdb,--args
Это вызывает все подпрограммы
gccпод ‘gdb --args’, таким образом, вызовcc1— это ‘gdb --args cc1 …’. -ffile-prefix-map=old=new-
При компиляции файлов, находящихся в каталоге old, записывайте все ссылки на них в результате компиляции так, как будто эти файлы находятся в каталоге new. Указание этого параметра эквивалентно указанию всех отдельных параметров -f*-prefix-map. Это можно использовать для создания воспроизводимых сборок, которые не зависят от расположения. См. также -fmacro-prefix-map, -fdebug-prefix-map и -fprofile-prefix-map.
-fplugin=name.so-
Загрузить код плагина из файла name.so, предполагая, что это общая библиотека, которая будет загружена с помощью dlopen’d компилятором. Базовое имя файла общей библиотеки используется для идентификации плагина в целях обработки аргументов (см. -fplugin-arg-name-key=value ниже). Каждый плагин должен определять функции обратного вызова, указанные в API плагинов.
-fplugin-arg-name-key=value-
Определить аргумент с именем key и значением value для плагина с именем name.
-fdump-ada-spec[-slim]-
Для исходных файлов и файлов включения C и C++, сгенерировать соответствующие спецификации Ada. См. Генерация связываний Ada для заголовков C и C++ в руководстве пользователя GNAT, которое содержит подробную документацию по этой функции.
-fada-spec-parent=unit-
В сочетании с -fdump-ada-spec[-slim] выше, генерировать спецификации Ada как дочерние модули родительского модуля unit.
-fdump-go-spec=file-
Для входных файлов на любом языке генерировать соответствующие объявления Go в файле file. Это генерирует объявления Go
const,type,var, иfunc, что может быть полезным способом начать разработку интерфейса Go для кода, написанного на другом языке. @file-
Считывать параметры командной строки из файла file. Прочитанные параметры вставляются вместо исходного параметра @file. Если file не существует или не может быть прочитан, то параметр будет обработан буквально и не будет удален.
Параметры в file разделяются пробелами. Пробел можно включить в параметр, заключив весь параметр в одинарные или двойные кавычки. Любой символ (включая обратную косую черту) можно включить, добавив перед ним обратную косую черту. Файл file может содержать дополнительные параметры @file; любые такие параметры будут обработаны рекурсивно.
Далее: Вызов G++, Предыдущее: Резюме параметров, Верхний уровень: Вызов GCC [Содержание][Индекс]
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-12.2.0/gcc/Overall-Options.html