(*) 5.1.4. Параметры, контролирующие результат компиляции

На верх  Назад  Вперёд

Список параметров приведён ниже. Более подробную информацию см. в документе Справочник программиста Free Pascal (на русском).

Параметр

Описание

-a

Не удалять файлы ассемблера (не применяется, когда используется встроенный ассемблер). Также применяется (когда возможно) для генерации пакетов сценариев.

-al

Включать строки исходного кода в файл ассемблера в качестве комментариев.

-an

Записывать информацию о контрольных точках в файл ассемблера (контрольные точки являются методом представления компилятором операторов или их составных частей). Это в основном предназначено для отладки кода, генерируемого компилятором.

-ap

Использовать каналы вместо создания временных файлов ассемблера. Это может ускорить компиляцию на операционных системах OS/2 и LINUX, при условии, что используется ассемблер (такой как GNU, если внутренний ассемблер используется).

-ar

Записывать информацию о заполнении и освобождении регистров в файл ассемблера. Это в основном предназначено для отладки кода, генерируемого компилятором.

-at

Записывать информацию о временном заполнении и освобождении ресурсов в файл ассемблера.

-Axxx

Указать, какого типа ассемблер должен генерироваться. Здесь ххх может принимать значения:

 

default

Использовать встроенный ассемблер по умолчанию.

 

as

Ассемблер, использующий GNU as.

 

nasmcoff

Файл Coff (Go32v2), использующий Nasm.

 

nasmelf

Файл Elf32 (LINUX), использующий Nasm.

 

nasmwin32

Файл Windows 32, использующий Nasm.

 

nasmdosx

Файл Windows 32/DOSX, использующий Nasm.

 

nasmobj

Объектный файл, использующий Nasm.

 

masm

Объектный файл, использующий Masm (Microsoft).

 

tasm

Объектный файл, использующий Tasm (Borland).

 

elf

Elf32 (LINUX), использующий встроенный редактор.

 

coff

Объектный файл Coff (Go32v2), использующий встроенный двоичный редактор.

 

pecoff

Объектный файл PECoff (Win32), использующий встроенный двоичный редактор.

-B

Перекомпилировать все используемые модули, даже если исходный код модуля не изменился с момента последней компиляции.

-b

Генерировать обзорную информацию. Эта информация может быть использована интегрированной средой разработки (IDE) для предоставления данных о классах, объектах, процедурах, типах и переменных в модуле.

-bl

То же самое, что –b, но также генерирует информацию о локальных переменных, типах и процедурах.

-Caxxx

Установить ABI (Application Binary Interface) для и. Параметр –i задаёт возможные значения для ххх.

-Cb

Генерировать код с обратным порядком байтов.

-Сс

Установить по умолчанию соглашения о вызовах, используемые компилятором.

-CD

Создать динамическую библиотеку. Это используется для трансформации модулей в динамически связанные библиотеки на LINUX.

-Се

Эмулировать операции с плавающей точкой.

-Cfxxx

Выбрать набор команд для операций с плавающей точкой. Возможные значения см. в описании параметра –i.

-CFNN

Установить минимальную точность при операциях с плавающей точкой в NN. Возможные значения 32 или 64.

-Cg

Включить генерацию PIC-кода. Это может потребоваться только при генерации библиотек на LINUX или других UNIX-подобных системах.

-Chxxx

Зарезервировать ххх байтов в «куче». Значение ххх должно быть в диапазоне от 1020 до 67107840.

-Ci

Генерировать проверку кода ввода/вывода. В случае одинакового кода входа/выхода ваша программа вернёт ошибку и будет завершена аварийно с ошибкой времени выполнения.

-Cn

Пропускать стадию компоновки.

-Co

Проверять переполнение при операциях с целыми числами. В случае переполнения в вашей программе будет генерироваться ошибка времени выполнения.

-СО

Проверять возможность переполнения при операциях с целыми числами.

-СрХХХ

Установить тип процессора как ХХХ. Выбрать набор команд процессора, параметр –i выводит возможные значения.

-CPX=N

Установить компоновку для Х в N. Здесь Х может принимать значения PACKSET, PACKENUM или PACKRECORD, а N может быть 1,2,4,8 или одним из ключевых слов DEFAULT или NORMAL. PACKRECORDS поддерживает 16 и 32 разрядные значания. (См. Справочник программиста Free Pascal (на русском))

-Cr

Генерировать код проверки диапазона. Если ваша программа попытается получить доступ к элементу массива с неправильным индексом или увеличить перечисляемый тип с превышением его диапазона, то будет сгенерирована ошибка времени выполнения.

-CR

Проверять вызываемый метод объекта на валидность.

-Csxxx

Установить размер стека равным ххх.

-Ct

Генерировать код проверки стека. Если ваша программа приведёт к переполнению стека, то будет сгенерирована ошибка времени выполнения.

-СХ

Создавать «умную» компоновку модуля при записи модуля. Эта технология будет включать в код только те части, которые используются программой. Весь неиспользуемый код будет отброшен. Это может уменьшить размер исполняемого файла.

-dxxx

Определить имя символа ххх. Это может быть использовано для согласования частей компилятора с вашим кодом.

-D

Генерировать DEF-файл (для OS/2).

-Dd

Установить описание исполняемого файла или библиотеки (Windows).

-Dv

Установить версию исполняемого файла или библиотеки (Windows).

То же самое, что и –Cn.

-g

Генерировать отладочную информацию для отладки с gdb.

-gc

Генерировать проверку для указателей. Это должно использоваться с параметром командной строки –gh. Если эти опции включены, то проверяется, что все указатели доступны в пределах «кучи».

-gg

То же самое, что g.

-gh

Использовать модуль heaptrc (см. документ «Библиотека времени выполнения (RTL), раздел 19). Формирует отчёт об использования «кучи» после выхода из программы.

-gl

Использовать модуль lineinfo (см. документ «Библиотека времени выполнения (RTL), раздел 22). Формирует файл с именем и номером строки, если программа была завершена с ошибкой.

-goXXX

Установить опцию отладочной информации. Здесь ХХХ – это значение dwarfsets: оно включает DWARF – технологию отладки при произвольном формате записей отладочной (это не работает с gdb версии ниже 6.5).

 

 

set debug information options. One of the options is dwarfsets: It enables dwarf set debug information (this does not work with gdb versions prior to 6.5. stabsabsincludes tells the compiler to store absolute/full include file paths in stabs. dwarfmethodclassprefix tells the compiler to prefix method names in DWARF with class name. item [-gp] Preserve case in stabs symbol names. Default is to uppercase all names.

установить отладочные варианты информационных.

 

Одним из вариантов является dwarfsets: Это позволяет карлик установленную информацию отладки (это не работает с GDB версиях до 6,5 stabsabsincludes сообщает компилятору хранить абсолютное / полный включают пути к файлам в удары dwarfmethodclassprefix сообщает компилятору имена методов префикс в карлика.. с классом имя. пункт [-GP] заповедник дело в именах удары символов. умолчанию в верхний регистр все имена.

 

 

 

 

 

 

 

 

 

 

 

-gp

Сохранять регистр в символьных именах. По умолчанию все имена сохраняются в верхнем регистре.

-gs

Записывать отладочную информацию.

-gt

«Засорять» локальные переменные. Эта опция записывает в локальные переменные случайные значения при старте процедуры. Может использоваться для обнаружения инициализированных переменных.

-gv

Формировать информацию для Valgrind.

-gw

Формировать информацию для DWARF (версия 2).

-gw2

Формировать информацию для DWARF (версия 2).

-gw3

Формировать информацию для DWARF (версия 3).

-kxxx

Поместить ххх в компоновщик.

-Nxxx

Do node tree optimizations. Here xxx is one of

u

Unroll loops

У дерева узлов оптимизацию. Здесь XXX является одним из
у
раскатать петель

-Оххх

Оптимизация выходного кода компилятора. Здесь ххх может иметь следующие значения:

 

aPARAM=VALUE

Определяет выравнивание структур и кода. PARAM определяет, что должно быть выровнено. VALUE определяет границы выравнивания. Описания возможных значений см. в документе «Руководство программиста».

 

g

Оптимизировать размер. Пытаться сгенерировать наименьший код.

 

G

Оптимизировать время. Пытаться генерировать быстрый код (по умолчанию).

 

r

Сохранять точные переменные в регистрах (экспериментальная опция, использовать осторожно).

 

u

Непостоянная оптимизация.

 

1

1-й уровень оптимизации (быстрая оптимизация).

 

2

2-й уровень оптимизации (-О1 плюс некоторое замедление оптимизации).

 

3

3-й уровень оптимизации (-О2 плюс -Оu).

 

oxxx

Определить специфическую оптимизацию. ххх может принимать значения:
REGVAR – использовать регистрацию переменных
STACKFRAME – пропускать фреймы стека
LOOPUNROLL – разворачивать (уменьшать) циклы
TAILREC – заменять очередь рекурсии для не рекурсионных циклов.

CSE - Common subexpression elimination. Общие устранение Подвыражение.

ORDERFIELDS - Reorder fields if this results in better alignment. Изменение порядка полей, если это приводит к более тесной увязки

FASTMATH - Fast math operations Быстрый математические операции

REMOVEEMPTYPROCS - remove calls to empty procedures. удалить вызовы пустых процедур

DFA - Enable Data Flow Analysis. (normally included -O3) Включить Анализ потока данных. (как правило, включены -O3)

 

рххх

Выбрать процессор ххх для оптимизации. Команда fpc –i выводит все возможные наборы команд процессора.

 

Wxxx

Генерирует информацию о полной программной оптимизации для функции ххх. Команда fpc –i выводит список возможных значений.

 

wxxx

Выполняет полную программную оптимизацию для функции ххх. Команда fpc –i выводит список возможных значений.

 

s

Оптимизировать в первую очередь размер, а затем скорость.

 

Точный эффект от некоторых из описанных выше оптимизаций описан в документе «Руководство программиста».

‑оххх

Использовать ххх в качестве имени выходного (исполняемого) файла. Для использования только с данной программой. Выходное имя файла может содержать путь, и если это так, то данная опция перепишет любые предыдущие настройки, установленные параметром –FE. Если имя выходного файла не содержит пути, то используются настройки опции –FE.

-pg

Генерировать код профайлера для gprof. Это определяет символ FPC_PROFILE, который может быть использован в соответствующих определениях.

-s

Не вызывать ассемблер и компоновщик. Вместо этого компилятор записывает сценарий PPAS.BAT для DOS или ppas.sh для LINUX, которые затем могут быть выполнены для генерации исполняемого файла. Это можно использовать для ускорения компиляции или для отладки выхода компилятора. Эта опция может принимать дополнительные параметры, в основном используемые для кросс- платформенной компиляции. Дополнительным параметром может быть одно из следующих значений:

 

h

Генерировать скрипт для компоновки на хосте. Сгенерированный скрипт может быть выполнен на платформе, где выполнялась компиляция (хост-платформа).

 

t

Генерировать скрипт для компоновки на целевой платформе. Сгенерированный скрипт может быть выполнен на целевой платформе, то есть на ОС, на которой будет выполняться программа.

 

r

Пропустить регистрацию распределения этапов (оптимизации будут отключены).

-Тххх

Определяет целевую операционную систему. Здесь ххх может быть одним из следующих значений:

 

emx

OS/2 через EMXDOS через дополнение EMX).

 

freebsd

FreeBSD.

 

Go32v2

DOS и версия 2 расширителя DJ DELORIE.

 

linux

LINUX.

 

netbsd

NetBSD.

 

netware

Novell Netware Module (clib).

 

netwlibc

Novell Netware Module (libc).

 

openbsd

OpenBSD.

 

os2

OS/2 (2.x), использующая расширитель EMX.

 

sunos

SunOS/Solaris.

 

watcom

Watcom-совместимый расширитель DOS.

 

wdosx

Расширитель WDOSX.

 

win32

32-разрядная Windows.

 

wince

Windows для handhelds (ARM-процессор).

 

Команда fpc –i выводит список поддерживаемых компилятором операционных систем.

-uxxx

Неопределённый символ ххх. Эта опция является антиподом опции –d.

-Ur

Генерировать выходные файлы модуля. Эти файлы не будут перекомпилированы, даже если доступны исходные файлы модуля. Может оказаться полезной при создании дистрибутива. Перезаписывается опцию –В.

-W

Установить атрибуты Windows или OS/2 для генерации двоичного файла. Это может быть один или несколько параметров, перечисленных ниже:

 

A

Specify native type application (Windows) Укажите собственное приложение типа (Windows)

 

b

Create a bundle instead of a library (Darwin) Создать расслоение вместо библиотеки (Darwin)

 

B

Create a relocatable image (Windows) Создать перемещаемый образ (Windows)

 

Bhhh

Установить предпочтительный базовый адрес в hhh (в шестнадцатиричной системе).

 

С

Генерировать консольное приложение (+) или GNU-приложение (-).

 

D

Форсировать использование Def-файла для экспорта.

 

e

Use external resources (Darwin) Используйте внешние ресурсы (Darwin)

 

F

Генерировать FS-приложение (+) или консольное приложение (-).

 

G

Генерировать GNU-приложение (+) или консольное приложение (-).

 

Mnnn

Minimum Mac OS X deployment version: nnn equals 10.4, 10.5.1, ... (Darwin) Минимальная Mac OS X версии развертывания: NNN равно 10,4, 10.5.1, ... (Darwin)

 

N

Не генерировать раздел перераспределения памяти.

 

R

Генерировать раздел перераспределения памяти.

 

Т

Генерировать TOOL-приложение (+) или консольное приложение (-).

 

X

Enable use of an executable stack (Linux) Включить использование исполняемого стека (Linux)

-Хх

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

с

(Только для LINUX). Компоновать с библиотекой С. Вы должны использовать эту опцию только когда вы запустили Free Pascal для другой операционной системы.

d

Не использовать стандартный путь библиотек. Это необходимо для кросс-платформенной компиляции, чтобы избежать компоновки с библиотеками хост-платформы.

D

Компоновать с динамической библиотекой (определённой символом FPC_LINK_DYNAMIC).

е

Использовать внешний (GNU) компоновщик.

g

Создавать отладочную информацию в отдельном файле и добавлять раздел отладки компоновщика для исполняемого файла.

i

Использовать встроенный компоновщик.

МХХХ

Установить имя входа в программу. По умолчанию это main.

m

Генерировать мэп-файл компоновщика.

РХХХ

Присоединять спереди имена с ХХХ для кросс-платформенной компиляции.

rXXX

Установить путь к библиотекам в ХХХ.

Rxxx

Присоединять спереди ххх для всех путей поиска компоновщика (используется для кросс- платформенной компиляции).

s

Отнимать символы из исполняемого файла.

S

Компоновать модули статически (по умолчанию определяется символом FPC_LINK_STATIC).

t

Компоновать библиотеки статически (поместить параметр –static в компоновщик).

Х

Выполнять «умную компоновку» модулей (по умолчанию определяется символом FPC_LINK_STATIC).