Как я могу скомпилировать свой Perl-скрипт, чтобы он мог выполняться в системах без установленного Perl? - PullRequest
52 голосов
/ 06 августа 2009

У меня есть файл .pl, и я хочу запустить этот файл в любой системе, даже если perl не установлен. Как мне этого добиться?

Может ли кто-нибудь дать мне знать с некоторыми хорошими примерами, чтобы сделать это?

Ответы [ 9 ]

42 голосов
/ 06 августа 2009

pp может создать исполняемый файл, который включает в себя perl и ваш скрипт (и любые зависимости модуля), но он будет специфичен для вашей архитектуры, поэтому вы не можете запустить его как на Windows, так и на Linux, например .

Из документа:

Чтобы создать автономный исполняемый файл, подходящий для работы на компьютере, на котором не установлен Perl:

   % pp -o packed.exe source.pl        # makes packed.exe
   # Now, deploy 'packed.exe' to target machine...
   $ packed.exe                        # run it

(% и $ есть командные строки на разных машинах).

27 голосов
/ 07 августа 2009
  1. Установка PAR::Packer. Пример для * nix:

    sudo cpan -i PAR::Packer

    Для установленного Strawberry Perl для Windows или для ActivePerl и MSVC:

    cpan -i PAR::Packer
  2. Упакуйте его с pp. В Windows будет создан исполняемый файл с именем «example» или «example.exe».

    pp -o example example.pl

Это будет работать только в той ОС, где оно было построено.

P.S. Действительно трудно найти клон Unix без Perl. Вы имели в виду Windows?

8 голосов
/ 07 августа 2009

От ответа perlfaq3 на Как мне скомпилировать мою программу Perl в байт-код или C? :


(предоставлено Брайаном Д. Фой)

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

Perl Archive Toolkit (http://par.perl.org/) является аналогом Perl для JAR Java. Он находится в свободном доступе и на CPAN (http://search.cpan.org/dist/PAR/).

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

Perl Dev Kit (http://www.activestate.com/Products/Perl_Dev_Kit/) от ActiveState может «превратить ваши программы Perl в готовые исполняемые файлы для HP-UX, Linux, Solaris и Windows».

Perl2Exe (http://www.indigostar.com/perl2exe.htm) - программа командной строки для преобразования сценариев perl в исполняемые файлы. Он предназначен как для платформ Windows, так и для Unix.

7 голосов
/ 06 августа 2009

Посмотрите на PAR (Perl Archiving Toolkit).

PAR - это кроссплатформенная упаковка и Инструмент развертывания, дублированный как крест между Java JAR и Perl2EXE / PerlApp .

6 голосов
/ 06 августа 2009

И давайте не будем забывать PDK ActiveState . Это позволит вам скомпилировать пользовательский интерфейс, командную строку, службы Windows и установщики.

Я очень рекомендую его, он очень хорошо служил мне на протяжении многих лет, но это примерно 300 $ за лицензию.

5 голосов
/ 28 декабря 2010

Примечание для Синан и Брайана: perlfaq3 все еще не верен

См. http://search.cpan.org/dist/B-C/perlcompile.pod

3 голосов
/ 06 августа 2009

Cava Packager отлично подходит для экосистемы Windows.

1 голос
/ 06 августа 2009

Perl-файлы - это скрипты, а не исполняемые программы. Поэтому, чтобы они «бежали», им понадобится переводчик.

Итак, у вас есть два варианта: 1) Иметь переводчика на компьютере, на котором вы хотите запустить скрипт, или 2) Сценарий должен быть запущен на сетевом (или интернет-) компьютере, к которому вы подключаетесь удаленно (например, с помощью браузера)

0 голосов
/ 13 июля 2014

В MaxOSX может быть perlcc . Тип man perlcc . В моей системе (10.6.8) он находится в / usr / bin. YMMV

См. http://search.cpan.org/~nwclark/perl-5.8.9/utils/perlcc.PL

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...