Не могу скомпилировать мой Perl-скрипт. Какой самый простой способ заставить все работать?
У меня много проблем с компиляцией моего Perl-скрипта. Я использую все виды модулей в моем скрипте:
use fetchinfo; #which I wrote so it's in the same directory as my script
use threads;
use threads::shared;
use Tk;
use Fcntl ':flock';
И fetchinfo.pm также использует эти модули:
use WWW::Mechanize;
use URI::Escape;
use Date::Calc qw(Delta_Days);
use LWP::Simple;
use HTML::Parser;
Я установил ActivePerl на мою машину (64-битная версия Win 7).
Я пытаюсь скомпилировать свой код и сделать его независимым.exe-файлом (хотя было бы здорово иметь возможность компилировать и для других систем (так как я думаю, что мой код не использует никаких системных функций).
Я не против установки виртуальной машины (если требуется 32-разрядная версия win или linux), я не против установки Strawberry Perl вместо ActivePerl... Я просто хочу иметь возможность скомпилировать код:-)
пытаясь использовать perl2EXE, он сказал, что не может найти несколько модулей (хотя каждый из них был установлен ppm). Я попытался скомпилировать в Linux с помощью Perl Packager (PAR::Packer) (поскольку он не отображается на ppm, и у меня возникли проблемы с его установкой другим способом), но созданный файл не работал.
... Помогите?:-)
1 ответ
Знаете ли вы, что все perl2exe
Как создать копию исполняемого файла интерпретатора Perl, который включает все ваши исходные файлы (возможно, в скомпилированном состоянии, я не уверен)?
Я рекомендую вам использовать PAR package
вместо этого, который создаст один архивный файл, содержащий все необходимые источники, которые могут быть запущены из perl
командная строка.
Если вам абсолютно необходимо иметь один исполняемый образ, посмотрите на PAR::Packer
вместо.
Обновить
Я действительно хочу, чтобы эта программа работала на компьютерах без установленного Perl. Я понял, что должен скомпилировать свой код, чтобы это работало. Пакет PAR не делает этого, верно?
Нет, вам не нужно компилировать исходный код Perl, чтобы поместить его в пакет. Это контрпродуктивно, так как время загрузки, как правило, увеличивается из-за дополнительной ByteLoader
модуль, необходимый для интерпретации результирующего дерева разбора.
Мне действительно нужна помощь в установке и использовании PAR::Packer, так как я не мог установить его на ActivePerl в Windows, а исполняемый файл, который он сделал для меня в Linux, не работал в Windows 64-bit. Так что я делаю что-то не так
У меня нет экземпляра ActivePerl, но Par::Packer
отлично устанавливается на Strawberry Perl 5 версии 16.2 и проходит все тесты. Пожалуйста, поймите, что вы не можете создать исполняемый файл в одной системе, которая будет работать на другой платформе. Это относится ко всем языкам, а не только к Perl. Вам нужна рабочая версия Perl в системе, совместимой с вашей целью, чтобы иметь возможность создать исполняемый файл, который будет работать в другом месте.