Руководство пользователя Free Pascal версии Версия документа Март 2010 Michael Van Canneyt, Florian Klampfl

Вид материалаРуководство пользователя

Содержание


Shell=c:\dos\command.com /e:1024
Duplicatelocals ?
Ifdef ver2_2_0
Ifndef ver2_2_0
Ifdef ver2_2_2
Ifdef linux
Подобный материал:
  1   2   3   4   5   6   7   8   9   ...   16


Free Pascal: Руководство пользователя


Free Pascal: Руководство пользователя


Руководство пользователя Free Pascal версии 2.4. Версия документа 2.4. Март 2010


Michael Van Canneyt, Florian Klampfl


Глава 1


Вступление


1.1 Об этом документе.


Это руководство пользователя Free Pascal. Оно описывает установку и использование компилятора Free Pascal на различных поддерживаемых платформах. Оно не пытается дать ни исчерпывающий список всех поддерживаемых команд, ни определение языка Pascal . Для этих целей смотрите Справочное Руководство. Для просмотра описания возможностей и внутренней организации компилятора используйте Руководство Разработчика. В приложениях этого документа Вы найдете списки зарезервированных слов и сообщений об ошибках компилятора (с описаниями).


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


1.2 О компиляторе.


Free Pascal — это 32-х и 64-битный компилятор для языка программирования Pascal. Текущая версия (2.2) способна компилировать код для следующих процессоров:


• Intel i386 и выше (i486, семейства Pentium и выше)


• AMD64/x86_64


• PowerPC


• PowerPC64


• SPARC


• ARM


• процессор m68K поддерживается в предыдущих версиях компилятора.


Компилятор и библиотека времени выполнения доступны для следующих операционных систем:


• DOS


• LINUX


• AMIGA (только версии 0.99.5)


• WINDOWS


• Mac OS X


• OS/2 (при этом возможно использование пакета EMX, такой способ будет работать также под DOS/Windows)


• FREEBSD


• BEOS


• SOLARIS


• NETBSD


• NETWARE


• OPENBSD


• MorphOS


• Symbian


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


Free Pascal проектировался так, чтобы быть как можно больше совместимым с Turbo Pascal 7.0 и Delphi 7 на уровне исходных текстов (хотя эта цель еще не достигнута), но это не мешает расширять язык новыми элементами, такими как перегрузка операторов и другие. И, в отличии от своих предков, он кроссплатформенный.


Он также отличается от остальных тем, что вы не можете использовать модули скомпилированные для одной системы в другой, т. е. вы не сможете использовать скомпилированные модули Turbo Pascal.


Также для Free Pascal есть интегрированная среда разработки, работающая в текстовом режиме. Пользователи, которые предпочитают графическую среду, могут посмотреть проекты Lazarus или MSIDE.


Free Pascal состоит из нескольких частей:


1. Собственно программа-компилятор.


2. Библиотека времени выполнения (Run-Time Library, RTL).


3. Пакеты. Это набор из множества вспомогательных модулей, поставляющих возможности начиная Windows 32 API, нативные возможности ZIP/BZIP работы с файлами вплоть к самому GTK-2 интерфейсу.


4. Библиотека свободных компонентов. Это набор модулей с классами, которые дают возможность работы с базами данных, изображениями, web, XML и многим другим.


5. Вспомогательные программы и модули.


Они вам понадобятся для того, чтобы иметь возможность работать с компилятором. В этом документе мы описываем использование компилятора и вспомогательных программ. Сам язык Pascal в Инструкции Пользователя, а доступные модули описаны в инструкциях пользователя по RTL и FCL Unit .


1.3 Получение дополнительной информации.


Если документация не дает ответ на Ваш вопрос, Вы можете найти больше информации в интернете по следующим адресам:


• ascal.org/ — основной сайт. На сайте можно найти полезные адреса электронной почты и ссылки на другие ресурсы, также есть инструкции, как подписаться на рассылку по электронной почте.


• .freepascal.org:10000/ — форум, на котором можно задавать свои вопросы.


Кроме этих вы можете найти также другие.


И на конец, если вы считаете, что что-то нужно добавить в этот документ (что вполне возможно), пожалуйста, не стесняйтесь и свяжитесь с автором по адресу michael@freepascal.org.


Давайте начнем с чего-то полезного.


Глава 2


Инсталляция компилятора


2.1 Перед установкой. Требования.


2.1.1 Аппаратные требования


Компилятору нужен как минимум один из следующих процессоров:


1. Intel 80386 или выше. Наличие сопроцессора не обязательно, хотя это замедлит выполнение Вашей программы, если Вы используете вычисления с плавающей точкой без сопроцессора, так как будет происходить эмуляция.


2. AMD64 или процессор EMT64.


3. Процессор PowerPC.


4. Процессор SPARC.


5. Процессор ARM.


6. Прежние версии FPC поддерживали процессоры motorola 68000, но они больше не используются.


Требования к памяти и дисковому пространству:


1. 8 МБ свободной памяти. Этого достаточно для компиляции маленьких программ.


2. Большие программы (такие, как сам компилятор) требуют не меньше 64 МБ памяти, хотя рекомендуется 128. (Имейте в виду, что откомпилированные программы не нуждаются в таком большом количестве памяти.)


3. Не менее 80 МБ свободного дискового пространства. Если установлены исходные коды, то не менее 270 МБ.


2.1.2 Требования к программному обеспечению под DOS


В дистрибутиве для DOS имеются все файлы, необходимые для запуска компилятора и компиляции Pascal-программ.


Под UNIX


В системах типа UNIX (и Linux в том числе) у Вас должно быть установлено следующее ПО:


GNU as (GNU-ассемблер).


GNU ld (GNU-компоновщик).


3. Опционально (но чрезвычайно рекомендовано): утилита GNU make. Она нужна для легкой пересборки компилятора и библиотек времени исполнения (Run-Time Library).


Под Windows


В составе операционной системы WINDOWS (как 32-х, так и 64-х битной) есть все необходимые файлы для запуска компилятора и скомпилированных программ. Тем не менее, было бы неплохо установить утилиты mingw32 или cygwin. Ссылки на эти утилиты можно найти на сайте ascal.org/.


Под OS/2


Не смотря на то, что в дистрибутиве Free Pascal есть все необходимые инструменты, желательно еще установить расширитель EMX для того, чтобы компилировать и запускать программы с компилятором Free Pascal. Расширитель EMX можно найти на:


ftp://hobbes.nmsu.edu/pub/os2/dev/emx/v0.9d


Под Mac OS X


Требуется Mac OS X 10.1 или выше, а также должны быть установлены инструменты разработчика или XCode.


2.2 Установка компилятора


Процесс инсталляции Free Pascal простой, но он платформозависим. Мы обсудим этот процесс для каждой платформы.


2.2.1 Установка под Windows


Для Windows существует инсталлятор setup.exe. Это обычный инсталлятор программ с возможностью выбора директории установки и компонентов дистрибутива, которые Вы хотите установить. Можно задать ассоциирование файлов с расширениями «pp» или «pas» к текстовому редактору Free Pascal.


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


2.2.2 Установка под DOS или OS/2


Обязательные инсталляционные шаги.


Для начала, Вы должны получить последний дистрибутив компилятора Free Pascal. Он распространяется как zip-архив, который Вы должны распаковать, либо можете скачать компилятор в виде отдельных файлов. Это особенно полезно, если у Вас медленное интернет-соединение,а также это удобно, когда Вы хотите установить только некоторые части дистрибутива компилятора.

Среди файлов дистрибутива для DOS или OS/2 есть установочная программа INSTALL.EXE. Вы должны запустить эту программу для установки компилятора.


Снимок экрана инсталляционной программы для DOS или OS/2 можно увидеть на рисунке 2.1.


Программа позволяет Вам выбирать:


Рисунок 2.1. Снимок экрана инсталляционной программы для DOS.


• Какие компоненты Вы хотите установить. Например, хотите ли Вы установить исходные тексты, нужна ли Вам документация или нет. Если Вы загружали отдельные файлы, то элементы, которые остались незагруженными, будут недоступны, т.е. Вы не сможете выбрать их.


• Куда Вы хотите установить компилятор(по умолчанию C:\PP).


Для того, чтобы запустить Free Pascal из любой директории в Вашей системе, Вы должны добавить в системную переменную path путь C:\PP\BIN. Обычно это делается в файле AUTOEXEC.BAT и должно выглядеть следующим образом:


SET PATH=%PATH%;

C:\PP\2.2\BIN\i386-DOS


для DOS, или


SET PATH=%PATH%;

C:\PP\2.2\BIN\i386-OS2


для OS/2. (при условии, что Вы установили компилятор в директорию по умолчанию).


На OS/2, Free Pascal устанавливает некоторые библиотеки из пакета EMX, если они не были ранее установлены. (Инсталятор сообщит Вам, должны ли они устанавливаться).

Они размещены в


C:\PP\DLL


Имя этой директории должно быть добавлено к директиве LIBPATH в файле config.sys:


LIBPATH=XXX;

C:\PP\DLL


Очевидно, что любые существующие каталоги в директиве LIBPATH (обозначены как XXX в приведенном выше примере) должны сохраниться.


Рисунок 2.2:


Опциональная установка: Эмуляция сопроцессора


Людям,у которых имеются процессоры старых версий, без поддержки математического сопроцессора(i387), необходимо установить эмуляцию сопроцессора, с тех пор, как Free Pascal начал использовать сопроцессор для вычисления операций с плавающей точкой.


Поддержку эмуляции сопроцессора можно включить в программе инсталляции (INSTALL.EXE) для операционных систем DOS и WINDOWS.


2.2.3 Установка под Linux


Обязательные этапы установки


Дистрибутив Free Pascal для LINUX может быть в трех формах:


tar.gz версия, также доступна в виде отдельных файлов.


.rpm (Red Hat Package Manager) версия, и


.deb (Debian) версия.


Если Вы используете .rpm формат, установка сводится к

rpm -i fpc-X.Y.Z-N.ARCH.rpm


Где X.Y.Z - номер версии .rpm файла, и ARCH - одна из поддерживаемых архитектур (i386, x86_64 и другие). Если Вы используете Debian, установка сводится к


dpkg -i fpc-XXX.deb


Где, опять же, ХХХ - номер версии .deb файла.


Для установки этих пакетов Вы должны иметь права суперпользователя (root).

.tar файл дает Вам возможность выполнить установку в Ваш домашний каталог, если у Вас нет прав суперпользователя.


При скачивании .tar файла или отдельных файлов, установка проходит в более интерактивной форме.


В случае скачивания .tar файла, сначала Вы должны распаковать (untar) его в тот каталог, для которого у Вас есть права записи, используя следующую команду:


tar -xvf fpc.tar


Здесь мы предполагаем, что Вы скачали файл с именем fpc.tar из Интернета. (Настоящее же имя файла будет иметь номер версии, который для простоты понимания мы опустили)


После распаковки tar-файла появятся дополнительные файлы архивов и программа установки в виде сценария командной оболочки (скрипта).


Если Вы скачали файлы по отдельности, то также необходимо, как минимум, скачать скрипт install.sh и библиотеки (находящиеся в libz.tar.gz)


Теперь для того, чтобы установить Free Pascal, достаточно ввести следующую команду:


./install.sh


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


1. Куда и что устанавливать.


2. Нужно ли устанавливать определённые компоненты (такие, как исходный код и примеры программ)


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


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


В конце установки, программа создаст файл конфигурации (fpc.cfg) для компилятора Free Pascal с указанными Вами настройками. Этот файл будет установлен в /etc или же в домашний каталог пользователя, если у Вас нет прав на запись в /etc. Будет создана копия в папке с установленными библиотеками.


Компилятор в начале проверяет наличие файла fpc.cfg в Вашей основной директории и только потом в каталоге /etc.


Дополнительные шаги по настройке


На любой платформе, после установки компилятора, Вы можете задать некоторые переменные среды. Компилятор Free Pascal понимает следующие переменные:


• PPC_EXEC_PATH содержит каталог, в котором находятся файлы для компиляции.


• PPC_CONFIG_PATH содержит альтернативный путь для поиска файла fpc.cfg.


• PPC_ERROR_FILE указывает путь и имя файла с описаниями ошибок.


• FPCDIR задает корневую директорию инсталяции Free Pascal. (например C:\PP\BIN)


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


Перед компиляцией


С дистрибутивом Free Pascal также идёт файл README. Он содержит последние инструкции по установке Free Pascal и должен быть прочитан первым.


Кроме того, платформо-специфическая информация и общие вопросы рассматриваются в FAQ. Его следует просматривать прежде, чем сообщать об ошибке.


2.5 Тестирование компилятора


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


В дистрибутив Free Pascal включены некоторые демонстрационные программы, показывающие возможности компилятора. Вы можете проверить, правильно ли работает компилятор, попробовав собрать(?) эти программы.


Файл компилятора называется


• fpc.exe в Windows, OS/2 и DOS.


• fpc в большинстве других операционных систем. Для компиляции программы (например, demo\text\hello.pp), скопируйте ее в Ваш текущий рабочий каталог и просто наберите:


fpc hello


в командной строке. Если у Вас нет файла конфигурации, то Вам нужно сообщить компилятору, где он может найти модули, например, следующим образом:


fpc -Fuc:\pp\NNN\units\i386-go32v2\rtl hello


под DOS, а под LINUX Вам следует набрать:


fpc -Fu/usr/lib/fpc/NNN/units/i386-linux/rtl hello


(замените NNN на номер версии Free Pascal, которую Вы используете). Естественно, предполагается, что Вы установили FP в C:\PP или /usr/lib/fpc/NNN, соответственно.


Если Вы не получили сообщения об ошибках, компилятор создал исполняемый файл hello.exe под DOS, OS/2 или Windows, или hello (без расширения) под UNIX и большинством других операционных систем. Чтобы выполнить программу, просто наберите:


hello


или


./hello


в Uniх'ах (где текущий каталог естественно не описан в PATH).


Если всё прошло успешно, Вы увидите следующее дружественное приветствие:


Hello world


Глава 3


Использование компилятора


Здесь мы опишем необходимые для компиляции программы и модуля. Для более продвинутого использования компилятора, см. раздел о настройке компилятора и руководство программиста.


Примеры в этом разделе предполагают наличие fpc.cfg, который правильно настроен и который содержит, как минимум, пути к RTL(Библиотека времени выполнения). В принципе, этот файл создается программой установки. Возможно, Вам придется удостовериться, что он находится в правильном месте. (См. раздел 5.2 для получения дополнительной информации по этому вопросу.)


3.1 Поиск файлов


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


Примечание: Не имеет значения, какой разделитель директорий использовать: косую черту (/) или обратную косую черту (\), - компилятор будет преобразовывать любой из них в символ, использующийся на текущей операционной системе. Примеры будут приведены с использованием косой черты, так как это позволяет избежать проблем на системах UNIX (например, Linux).


3.1.1 файлы из командной строки


Файл, который Вы укажете в командной строке, например


fpc foo.pp


будет искаться только в текущем каталоге. Если Вы указываете каталог в имени файла, то компилятор будет искать в этом каталоге:


fpc subdir/foo.pp


будет искать foo.pp в подкаталоге subdir текущего каталога.


В случае чувствительной к регистру файловой системы (например, Linux и Unix), имя этого файла будет также чувствительно к регистру; под другими операционными системами (такие как DOS, Windows NT, OS/2) это не так.


3.1.2 Файлы модулей


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


1. поиск производится в текущем каталоге.


2. поиск производится в каталоге исходного файла.


3. поиск производится в каталоге компилятора.


4. поиск производится в каталоге, указанном в путях поиска директорий.


Вы можете добавить каталог к путям поиска модулей с помощью опции(-Fu (см. стр. 26)). Каждое появление такой опции будет добавлять каталог к путям поиска модулей, т.е. последний путь в командной строке, при поиске, будет использоваться в первую очередь.


Компилятор добавляет несколько путей для поиска модулей:


1. Содержимое переменной окружения XXUNITS, где ХХ должно быть заменено на одну из поддерживаемых целей: GO32V2, Linux, Win32, OS2, BeOS, FreeBSD, NetBSD.


Каталог модулей по умолчанию. Этот каталог определяется из переменной окружения FPCDIR.


Если эта переменная не задана, то по умолчанию применяется следующее:


• В Linux: /usr/local/lib/fpc/FPCVERSION или /usr/lib/fpc/FPCVERSION


в зависимости от того, что будет найдено первым.


• для других ОС: каталог с исполняемым файлом компилятора с '../', если он существует. Например, на Windows это C:\FPC\2.2\units\i386-win32.


Предполагается, что компилятор был установлен в каталог


C:\FPC\2.2


После этого каталога определяются другие директории, которые нужно добавить к путям поиска:


(a) FPCDIR/units/FPCTARGET


(b) FPCDIR/units/FPCTARGET/rtl


Здесь FPCTARGET должен быть заменен на название целевой платформы: это сочетание процессора и операционной системы, для примера,


/usr/local/lib/fpc/2.2/units/i386-linux/


или, при кросс-компиляции


/usr/local/lib/fpc/2.2/units/i386-win32/


Параметр -Fu принимает один символ *, который будет заменен на все каталоги, найденные в указанном месте, но не на текущий каталог. Например, имеются каталоги:


rtl/units/i386-linux


fcl/units/i386-linux


packages/base


packages/extra


команда


fpc -Fu"*/units/i386-linux"


имеет такой же эффект, как команда


fpc -Furtl/units/i386-linux -Fufcl/units/i386-linux


так как rtl и fcl каталоги содержат подкаталоги units/i386-linux. Каталог packages не будут добавлен, так как он не содержит подкаталога units/i386-linux .


Следующая команда


fpc -Fu"units/i386-linux/*"


будет соответствовать любому каталогу, находящемуся ниже каталога units/i386-linux, но не будет соответствовать units/i386-linux, так что Вы должны добавить его вручную, если хотите, чтобы компилятор искал файлы в этом каталоге:


fpc -Fu"units/i386-linux" -Fu"units/i386-linux/*"


Заметим, что (для оптимизации) компилятор удалит любой несуществующий путь из пути поиска, то есть будет проверено существование пути (после подстановки и раскрытия переменных окружения). Вы можете увидеть, в каких каталогах компилятор будет проводить поиск, задавая ему опцию -vu . В системах, где имена файлов чувствительны к регистру (таких как UNIX и LINUX), компилятор будет:


1. Искать файл с оригинальним именем, то есть ?preserves case?


2. Поиск файла с именем в нижнем регистре.


3. Поиск файла с именем в верхнем регистре.


Это необходимо, так как Pascal не чувствителен к регистру символов, и использование Unit1; равносильно использованию unit1;.


Это будет производиться сначала для расширения .ppu (скомпилированный модуль),.pp, а затем с расширением.pas.


Например, предположим, что файлу foo.pp нужен модуль bar. Тогда команда


fpc -Fu.. -Fuunits foo.pp


скажет компилятору искать модуль bar в следующих местах:


1. В текущей директории.


2. В каталоге размещения компилятора(не под Linux).


3. В родительском каталоге текущего каталога.


4. В подкаталоге units текущего каталога.


5. В каталоге размещения модулей по умолчанию.


Кроме того, модуль с именем длиннее 8 символов сперва ищется по своему полному имени. Если модуль не найден, тогда его имя обрезается до 8 символов, и компилятор снова ищет его в тех же директориях, но уже с укороченным именем.


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


Если компилятор не найдет скомпилированную версию модуля, либо, когда задан параметр -B, компилятор будет выглядеть таким же образом,как для исходного файла модуля, и попытается перекомпилировать его.


Рекомендуется установить путь поиска модулей в файле конфигурации fpc.cfg . Если Вы сделаете это, то не нужно будет указывать путь поиска в командной строке каждый раз, когда Вы захотите скомпилировать что-нибудь.


3.1.3 Включение файлов


Если Вы включаете файл в исходный код директивой {$I filename}, компилятор будет искать его в следующих местах:


1. В пути, указанном в имени включаемого файла.


2. В каталоге, в котором находится файл с исходным кодом.


3. В каталогах, указанных в путях поиска для включаемых файлов.


Вы можете добавить файлы в путь поиска для вложения (include) (см. стр. 26) или использовать параметр -Fi (см. стр. 26).


В качестве примера рассмотрим следующую директиву, объявленную в файле units/foo.pp:


{$i ../bar.inc}


Тогда следующая команда:


fpc -Iincfiles units/foo.pp


приведет к тому, что компилятор будет искать файл bar.inc в следующих каталогах:


1. В родительском каталоге текущего каталога.


2. В подкаталоге units текущего каталога.


3. В подкаталоге incfiles текущего каталога.


3.1.4 Объектные файлы


Когда Вы ссылаетесь на объектные файлы (с помощью директивы{$L file.o}), компилятор будет искать этот файл так же, как и включаемые файлы:


1. В пути, указанном в имени объектного файла.


2. В каталоге, в котором находится файл с исходным кодом.


3. В каталогах, указанных в путях поиска для объектных файлов.


Вы можете добавлять файлы в пути поиска объектных файлов с помощью директивы -FO (см. стр. 26).


3.1.5 Файл конфигурации


Не все опции должны быть указаны в командной строке компилятора. Компилятор может использовать файл конфигурации, который содержит те же опции, что находятся и в командной строке. Если не указан параметр -N (см. стр. 24), компилятор будет искать файл конфигурации fpc.cfg в следующих местах:


• Под Unix (например, Linux)


1. В текущей директории.


2. В домашней директории пользователя, ищется файл .fpc.cfg.


3. В каталоге, указанном в системной переменной PPC_CONFIG_PATH, если она не задана,то компилятор будет искать в каталоге etc,находящимся на уровень выше местонахождения самого компилятора. (Для примера, если компилятор находится в каталоге /usr/local/bin, он будет искать в каталоге /usr/local/etc).


4. В каталоге /etc.


• Под всеми остальными операционными системами.


1. В текущей директории.


2. В каталоге, указанном в системной переменной PPC_CONFIG_PATH, если она задана.


3. В каталоге, в котором находится компилятор.


Все версии компилятора до версии 1.0.6 используют файл конфигурации ppc386.cfg. Этот файл по-прежнему ищется, но его использование считается устаревшим. Для совместимости, fpc.cfg будет искаться первым, и если он не найден,то будет искаться и использоваться файл ppc386.cfg .


Примечание: поиск ppc386.cfg будет удален из компилятора в версии 2.4.0. Для обозначения этого, компилятор выдает предупреждение с версии 2.3.1, если в нем используется вышеуказанный файл конфигурации.


3.1.6 О длинных именах файлов


Free Pascal может обрабатывать длинные имена файлов на всех платформах, кроме DOS. В Windows он будет использовать поддержку длинных имен файлов, если это доступно (что не всегда бывает в старых версиях Windows).


Если нет поддержки длинных имен файлов, то Free Pascal будет обрезать имена файлов до 8 символов.


Не рекомендуется помещать модули в каталоги, которые содержат пробелы в своих названиях, так как внешний компоновщик GNU не понимает таких имен файлов.


3.2 Компиляция программы


Компиляция программы очень проста. Предполагая, что у Вас есть исходный код программы в файле prog.pp, Вы можете скомпилировать его с помощью следующей команды:


fpc [options] prog.pp


Квадратные скобки [] указывают на то, что текст написанный между ними не является обязательным.


Если Ваша программа имеет расширение .pp или .pas , Вы можете пропустить его в командной строке, например, в предыдущем примере Вы могли бы набрать:


fpc [options] prog


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


Вы можете заметить, что есть и другой файл в папке, с расширением .o. Этот документ содержит объектный файл для Вашей программы. Если Вы скомпилировали программу, можете удалить объектный файл (.o), но не удаляйте его, если Вы скомпилировали модуль. Потому что данный объектный файл содержит код самого модуля, и будет связан(linked ) с любой программой, которая использует его.


3.3 Компиляция модуля


Компиляция модуля, по существу, ничем не отличается от компиляции программы. Разница, в основном, в том, что в этом случае не вызывается компоновщик.


Для компиляции модуля foo.pp, введите следующее:


fpc foo


Напомним про замечание о расширении файлов в предыдущем разделе. Если все прошло хорошо, у Вас будет 2(два) файла модуля:


1. foo.ppu - этот файл описывает модуль, который Вы скомпилировали.


2. foo.o - этот файл содержит актуальный откомпилированный код модуля. В итоге он попадет в исполняемый файл.


Оба файла необходимы, если Вы собираетесь использовать модуль в программах. Поэтому не удаляйте их. Если Вы хотите распространять модуль, нужно обеспечить наличие обох, .ppu и .o, файлов. По отдельности они бесполезны.


3.4 Модули, библиотеки и умная компоновка


Компилятор Free Pascal поддерживает умную компоновку (smartlinking) и создание библиотек. По умолчанию, компиляция каждого модуля происходит в один большой объектный файл. Динамически подключаемые библиотеки могут быть созданы на большинстве платформ, хотя нынешний уровень поддержки FPC может варьироваться (например, не поддерживается для GO32v2 и OS2).


Также можно взять существующие модули и сложить их вместе, в одну статическую или динамическую библиотеку (с использованием утилиты ppumove, раздел 8.7, стр. 107).


3.5 Уменьшение размера Вашей программы


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


Избыток информации может быть удален небольшой программой, называемой strip. Использовать ее просто. Просто введите:


strip prog


В командной строке, и программа strip удалит всю ненужную информацию из Вашей программы. Это может привести к сокращению размера до 30%.


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


Другим способом сократить размер программы является использование smartlinking. Как правило, модули (в том числе, системный модуль) связаны в целом. Тем не менее, есть возможность компилировать модули так, чтобы они использовали умную компоновку. Это означает, что только функции и процедуры, которые действительно используются в Вашей программе, будут включены в нее. Активировать использование умной компоновки можно опцией компилятора -ХХ(см. стр. 31). Этот метод описан в полном объеме в руководстве программиста.


Параграф 4


Проблемы компиляции


4.1 Общие проблемы


• IO-error -2 at ... : Под Linux Вы можете получить такое сообщение при запуске компилятора.Обычно это означает, что компилятор не находит файл с определениями ошибок . Вы можете исправить это с помощью параметра -Fr (см. стр. 26) под Linux.


• Error : File not found : xxx или Error: couldn’t compile unit xxx: Это обычно происходит, когда путь к Вашим модулям установлен неправильно. Помните, что компилятор ищет модули только в текущем каталоге и в каталоге, где размещен сам компилятор. Если Вы хотите, чтобы он искал где-то еще, нужно явно указать это, используя параметр -Fu (см. стр. 26). Или настроить файл конфигурации.


4.2 Проблемы, которые могут возникнуть под DOS


No space in environment. (прим. перевод. Не достаточно памяти). Такое сообщение об ошибке может возникнуть, если Вы вызовите SET_PP.BAT из AUTOEXEC.BAT. Чтобы решить эту проблему, необходимо увеличить память для окружения. Для этого найдите в CONFIG.SYS строку


SHELL=C:\DOS\COMMAND.COM


и измените ее на следующую:


SHELL=C:\DOS\COMMAND.COM /E:1024


Возможно, Вам придется задать значение побольше, если такой параметр уже установлен.


• Coprocessor missing, если компилятор выдает сообщение об отсутствии сопроцессора, Вам нужно установить эмуляцию сопроцессора.


• Not enough DPMI memory, если Вы хотите использовать компилятор с DPMI, Вы должны иметь, по крайней мере, 7-8 Мб свободной памяти DPMI, но 16 Мб является наиболее предпочтительной величиной.