Создание двоичного файла, который запускается на компьютере с Linux, начиная с компьютера с Windows < strong>не возможно.
Вы используете команду pp (из PAR-Packer
) наверное, точно так же, как вы делали в Windows
pp -S -M Some::Module -M Some::Other::Module -o youBinary.bin Script1.pl Script2.pl ScriptN.pl
Что следует отметить:
- Флаг
-M
может быть необходим, потому что иногда автоматический поиск зависимостей может не работать (некоторые из них загружаются динамически во время выполнения, поэтому нужно немного проб и ошибок, пока вы не получите хорошую комбинацию). Будьте особенно осторожны, когда видите подобные предупреждения при выполнении pp
:
Use of runtime loader module Module::Runtime detected. Results of static scanning may be incomplete.
Use of runtime loader module Module::Implementation detected. Results of static scanning may be incomplete.
- #P4# <блочная цитата> #P5# блочная цитата> #P6#
Помните также о создании двоичного файла на машине со «старой» libc. Если вы сделаете это на новейшем Linux, вам понадобится новейший Linux, чтобы запустить его, что сделает его менее переносимым.
Обратите внимание, что даже если ваш perl был собран с общей библиотекой, для корректной работы «автономного исполняемого файла» выше не потребуется отдельный perl5x.dll или libperl.so. Но даже в этом случае базовые системные библиотеки, такие как libc, должны быть совместимы между хостом и целевой машиной.
Наслаждайтесь своим автономным двоичным файлом Perl.
ИЗМЕНИТЬ
Создание двоичного файла, который запускается на компьютере с Linux, начиная с компьютера с Windows < strong>не возможно.
Сценарии Perl Packager говорят, что они могут создавать исполняемые файлы, работающие в той же ОС. Могу ли я использовать его для создания двоичного файла Win32 с Linux-машиной? Или что мне следует использовать для создания исполняемого двоичного файла Win32 в Linux из моего скрипта?
Невозможно создать автономные двоичные файлы для платформы, отличной от той, на которой вы сейчас работаете. Как правило, это сложная проблема, поскольку вам придется кросс-компилировать все модули XS и сам perl. Не хорошо.
Например, если вы хотите разработать приложение для Linux и поставлять его как для Linux/x86, так и для Win32/x86, лучше настроить виртуальную машину с Windows (XP или 2000 или любой другой) и установить Perl. На этой машине используйте PAR/pp для упаковки вашего приложения для Win32.
На каких платформах можно запускать PAR? На каких платформах будет работать полученный исполняемый файл?
Win32 (95/98/ME/NT4/2K/XP), FreeBSD, Linux, AIX, Solaris, Darwin и Cygwin.
Полученный исполняемый файл будет работать на любых платформах, поддерживающих двоичный формат генерирующей платформы.
person
LaintalAy
schedule
08.04.2016