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

46

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

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

Теги:

9 ответов

39

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

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

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

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

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

  • 0
    привет, вы можете объяснить мне вкратце ... потому что я новичок в Perl .... нужно ли мне добавить этот код в исходный код Perl или я должен выполнить его в командной строке .... я использовал такие модули, как использовать Win32 :: OLE; использовать Win32 :: OLE :: Enum; использовать Spreadsheet :: BasicRead; как я могу сделать мой .pl для запуска в каждой системе .. Windows (предпочтительно)
  • 0
    @lokesh, я думаю, вам нужно будет упаковать модули script + с предварительно скомпилированным интерпретатором perl для каждой системы и поместить их в zip-файл.
Показать ещё 9 комментариев
25
  • Установите PAR::Packer. Пример для * nix:

    sudo cpan -i PAR::Packer

    Для Strawberry Perl для Windows или для ActivePerl и MSVC:

    cpan -i PAR::Packer
  • Упакуйте его с помощью pp. Он создаст исполняемый файл с именем "example" или "example.exe" в Windows.

    pp -o example example.pl

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

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

  • 3
    PAR не является полным решением, если код, который вы хотите упаковать, должен быть скомпилирован.
  • 2
    Также вам не нужен ключ -i для cpan. Просто дайте ему список модулей, и он определит эту часть для вас. :)
7

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


(внесенный brian d foy)

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

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

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

Набор Perl Dev (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.

  • 2
    Обратите внимание, что это был ответ в 2009 году, но Reini Urban имеет обновления
7

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

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

  • 0
    В частности, для ОП требуется pp : search.cpan.org/perldoc/pp
  • 0
    использовать PAR; % pp -opack.exe try.pl # делает упакованный.exe $ pack.exe # запустите его, это мой код, и я установил PAR, но даже если он выдает «не могу найти PAR.pm @INC ...» может Вы говорите мне, где я ошибся? Можете ли вы рассказать мне об основных, пожалуйста .. я никогда не пробовал раньше .. У меня есть файл .pl, а затем, как я могу использовать PAR для перехода на .exe, вы можете сказать мне на примере
6

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

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

4

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

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

3

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

1

Perl файлы - это скрипты, а не исполняемые программы. Поэтому, чтобы "запустить", им понадобится интерпретатор.

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

  • 2
    но два ответа перед вами доказали, что ваш комментарий недействителен.
  • 2
    Нет, они не PAR просто архивирует специфичный для платформы двоичный файл perl с помощью скрипта, который вы распространяете.
Показать ещё 2 комментария
0

В MaxOSX может быть perlcc. Тип человека perlcc. В моей системе (10.6.8) это в /usr/bin. YMMV

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню