perldos
СОДЕРЖАНИЕ
НАЗВАНИЕ
perldos - Perl под DOS, W31, W95.
СИНТАКСИС
Инструкции по компиляции Perl под DOS (или w??), используя DJGPP v2.03 или более поздние версии. Под w95 поддерживаются длинные имена файлов.
ОПИСАНИЕ
Перед началом, ознакомьтесь с файлом README в корневом каталоге, куда была распакована дистрибуция Perl. Убедитесь, что вы ознакомились и поняли условия распространения этого программного обеспечения.
Этот порт в настоящее время поддерживает MakeMaker (набор модулей, используемых для компиляции расширений для perl). Поэтому вы должны иметь возможность компилировать и устанавливать большинство расширений, доступных на сайтах CPAN.
Подробные инструкции по компиляции и установке модулей расширений perl, включая модули типа XS, включены. См. 'КОМПИЛЯЦИЯ И УСТАНОВКА МОДУЛЕЙ'.
Предварительные условия для компиляции Perl на DOS
- DJGPP
-
DJGPP — это порт компилятора GNU C/C++ и средств разработки для 32-битной защищённой среды на 32-битных процессорах Intel, работающих под MS-DOS и совместимыми операционными системами, созданный DJ Delorie <dj@delorie.com> и его друзьями.
Для получения более подробной информации (FAQ) посетите сайт DJGPP по адресу:
http://www.delorie.com/djgpp/Если у вас есть вопросы о DJGPP, попробуйте обратиться в новостную группу djgpp: comp.os.msdos.djgpp, или используйте электронную почту djgpp@delorie.com.
Полный дистрибутив DJGPP можно найти на одном из зеркал, перечисленных здесь:
http://www.delorie.com/djgpp/getting.htmlДля компиляции perl (или добавления новых модулей) вам потребуются следующие файлы:
v2/djdev203.zip v2gnu/bnu2112b.zip v2gnu/gcc2953b.zip v2gnu/bsh204b.zip v2gnu/mak3791b.zip v2gnu/fil40b.zip v2gnu/sed3028b.zip v2gnu/txt20b.zip v2gnu/dif272b.zip v2gnu/grep24b.zip v2gnu/shl20jb.zip v2gnu/gwk306b.zip v2misc/csdpmi5b.zipили, возможно, более новые версии.
- Pthreads
-
Поддержка потоков не тестировалась в этой версии perl для djgpp.
Недостатки Perl под DOS
Perl под DOS не обладает некоторыми функциями Perl под UNIX из-за недостатков эмуляции UNIX, в частности:
-
fork() и pipe()
-
некоторые функции файловой системы UNIX, касающиеся количества ссылок и дат файлов
-
операции на месте несколько нарушены при использовании коротких имён файлов
-
сокеты
Компиляция Perl под DOS
-
Распакуйте исходный пакет perl5.8*.tar.gz с помощью djtarx. Если вы хотите использовать длинные имена файлов под w95 и также заставить Perl пройти все свои тесты, не забудьте использовать
set LFN=y set FNCASE=yперед распаковкой архива.
-
Создайте «символическую ссылку» или скопируйте ваш bash.exe в sh.exe в каталоге
($DJDIR)/bin.ln -s bash.exe sh.exe[Если у вас установлена рекомендуемая версия bash для DJGPP, это уже сделано за вас.]
И установите переменную окружения
SHELLдля указания на этот файл sh.exe:set SHELL=c:/djgpp/bin/sh.exe (use full path name!)Вы можете сделать это также в файле djgpp.env. Добавьте эту строку *ДО* определения любого раздела:
+SHELL=%DJDIR%/bin/sh.exe -
Если split.exe и gsplit.exe находятся в вашем пути, переименуйте split.exe в djsplit.exe, а gsplit.exe в split.exe. Скопируйте или создайте ссылку на gecho.exe в echo.exe, если у вас нет echo.exe. Скопируйте или создайте ссылку на gawk.exe в awk.exe, если у вас нет awk.exe.
[Если у вас установлены рекомендуемые версии djdev, утилиты shell и gawk, все это уже сделано за вас, и вам ничего делать не нужно.]
-
Перейдите в подкаталог djgpp в корневом каталоге perl и выполните следующие команды:
set FNCASE=y configure.batЭто выполнит предварительную обработку, а затем запустит скрипт Configure для вас. Скрипт Configure интерактивный, но в большинстве случаев вам нужно просто нажимать ENTER. Команда "set" гарантирует, что DJGPP сохранит регистр имён файлов при чтении каталогов. Если вы уже выполнили эту команду set при распаковке архива и находитесь в той же сессии DOS, что и при распаковке, вам не нужно выполнять команду set снова. Эта команда необходима *до* начала (повторной) конфигурации или (повторной) компиляции perl, чтобы гарантировать как правильную компиляцию perl, так и успешную компиляцию модулей типа XS. Подробнее см. запись в справке DJGPP для "_preserve_fncase":
info libc alphabetical _preserve_fncaseЕсли скрипт указывает, что ваш пакет неполный и спрашивает, продолжить или нет, просто ответьте Y (это может произойти только если вы не используете длинные имена файлов или забыли выполнить "set FNCASE=y" в самом начале).
Когда Configure спросит о расширениях, я рекомендую IO и Fcntl, а если вам нужна обработка баз данных, то SDBM_File или GDBM_File (вам нужно установить gdbm для этого). Если вы хотите использовать POSIX-расширение (это по умолчанию), убедитесь, что размер стека вашего cc1.exe не меньше 512 КБ (можно проверить командой:
stubedit cc1.exe).Вы можете использовать скрипт Configure и в неинтерактивном режиме. При компиляции моего perl.exe я использовал что-то вроде этого:
configure.bat -desБолее подробную информацию о командных переключателях скрипта Configure можно найти в файле INSTALL.
Если после завершения скрипта вы хотите изменить значения в сгенерированном файле config.sh, выполните
sh Configure -Sпосле внесения ваших изменений.
ВАЖНО: если вы используете этот
-Sпереключатель, обязательно удалите переменную окружения CONFIG перед запуском скрипта:set CONFIG= -
Теперь можно скомпилировать Perl. Введите:
make
Тестирование Perl под DOS
Введите:
make test Если вам повезёт, вы увидите "All tests successful". Но может быть несколько не пройденных подтестов (в идеале меньше 5), в зависимости от внешних условий (например, некоторые подтесты не проходят под linux/dosemu или обычной DOS с только короткими именами файлов).
Установка Perl под DOS
Введите:
make install Это скопирует только что скомпилированный perl и библиотеки в вашу структуру каталогов DJGPP. Perl.exe и утилиты разместятся в ($DJDIR)/bin, а библиотека — в ($DJDIR)/lib/perl5. Поддержка документации pod находится в ($DJDIR)/lib/perl5/pod.
КОМПИЛЯЦИЯ И УСТАНОВКА МОДУЛЕЙ ПОД DOS
Предварительные условия для компиляции модулей Perl под DOS
Для компиляции и установки модулей без XS всё, что вам нужно, — это работающий perl под DJGPP. Модули без XS не требуют повторной компоновки двоичного файла perl, поэтому их компиляция и установка проще.
Модули типа XS требуют повторной компоновки двоичного файла perl, поскольку часть модуля XS написана на «C» и должна быть связана с двоичным файлом perl для выполнения. Это необходимо, потому что perl под DJGPP скомпилирован с опцией «статической компоновки» из-за отсутствия «динамической компоновки» в среде DJGPP.
Поскольку модули XS требуют повторной компоновки двоичного файла perl, вам необходимы как дистрибутив двоичного файла perl, так и исходный дистрибутив perl для компиляции модуля расширения типа XS. Кроме того, вам придётся скомпилировать двоичный файл perl из исходного дистрибутива, чтобы все компоненты двоичного файла perl были доступны для необходимой стадии компоновки.
Распаковка модулей CPAN под DOS
Сначала загрузите пакет модулей с CPAN (например, текстовый пакет «Comma Separated Value», Text-CSV-0.01.tar.gz). Затем распакуйте содержимое пакета в какое-либо место на вашем диске. Большинство пакетов CPAN построены с внутренней структурой каталогов, поэтому обычно безопасно распаковать их в корневой каталог вашей установки DJGPP. Некоторые предпочитают размещать исходные деревья в /usr/src (т. е., ($DJDIR)/usr/src), но вы можете поместить их куда угодно, *кроме* каталога с исходным кодом perl. Для модулей, расположенных в дереве исходного кода perl, существуют особые правила, которые не применяются к большинству модулей CPAN.
В отличие от других пакетов DJGPP, которые являются обычными файлами «zip», большинство пакетов модулей CPAN представляют собой «архивы tar с gzip-сжатием». Недавние версии WinZip безопасно распакуют и разархивируют их, *если* только в них нет файлов нулевой длины. Известная ошибка WinZip (по состоянию на версию 7.0) заключается в том, что она не извлекает файлы нулевой длины.
Из командной строки вы можете использовать утилиту djtar, поставляемую с DJGPP, для распаковки и разархивирования этих файлов. Например:
C:\djgpp>djtarx -v Text-CSV-0.01.tar.gz Это создаст новый каталог ($DJDIR)/Text-CSV-0.01, заполнив его исходным кодом данного модуля.
Компиляция модулей без XS под DOS
Для компиляции модуля без XS вы можете использовать стандартные инструкции по сборке модулей, поставляемые с perl.
perl Makefile.PL
make
make test
make install Этого достаточно, потому что модули без XS устанавливают только файлы ".pm" и (иногда) документацию pod и/или man. Для компиляции, установки или использования модулей без XS повторная компоновка двоичного файла perl не требуется.
Компиляция модулей с XS под DOS
Для компиляции модуля с XS необходимо использовать стандартные инструкции по сборке модулей, поставляемые с perl, *плюс* три дополнительных инструкции, специфичные для среды DJGPP со «статической компоновкой».
set FNCASE=y
perl Makefile.PL
make
make perl
make test
make -f Makefile.aperl inst_perl MAP_TARGET=perl.exe
make install Первая дополнительная инструкция устанавливает переменную окружения DJGPP FNCASE таким образом, чтобы новый двоичный файл perl, который нужно скомпилировать для модуля типа XS, был скомпилирован правильно. Вторая дополнительная инструкция перекомпилирует двоичный файл perl в каталоге вашего модуля перед выполнением «make test», чтобы вы тестировали с новым кодом модуля, скомпилированным с помощью «make». Третья дополнительная инструкция устанавливает двоичный файл perl из каталога модуля в стандартный каталог двоичных файлов DJGPP, ($DJDIR)/bin, заменяя ваш предыдущий двоичный файл perl.
Обратите внимание, что значение MAP_TARGET *должно* иметь расширение ".exe", иначе вы не создадите «perl.exe» для замены файла в ($DJDIR)/bin.
После завершения процесс установки модуля XS добавит информацию в ваш файл «perllocal», указывающую, что двоичный файл perl был заменён и какой модуль был установлен. Вы можете просмотреть эту информацию в любое время, выполнив команду:
perl -S perldoc perllocal АВТОР
Ласло Молнар, laszlo.molnar@eth.ericsson.se [Установка/компиляция perl]
Питер Дж. Фарли III pjfarley@banet.net [Компиляция/установка модулей]
СМОТРИТЕ ТАКЖЕ
perl(1).
© 1993–2020 Larry Wall and others
Licensed under the GNU General Public License version 1 or later, or the Artistic License.
The Perl logo is a trademark of the Perl Foundation.
https://perldoc.perl.org/5.30.3/perldos