Вот пример того, как вы можете использовать pp
для создания исполняемого файла (который не зависит от устанавливаемого исполняемого файла perl
).
Я использую perlbrew
с perl
версия 5.30 в Ubuntu 20.04.
Первая установка pp
:
cpanm PAR::Packer
Создание тестового Perl сценария hello.pl
(может потребоваться установить Path::Tiny
первое):
use feature qw(say);
use strict;
use warnings;
use Path::Tiny; # <-- NOTE: non-core module used
say "Hello world! CWD = ", Path::Tiny->cwd;
Упакуйте его в исполняемый файл:
pp -o hello hello.pl
Проверьте, что скрипт Perl независим исполняемого файла perl
, удалив PATH
:
$ PATH= ./hello
Hello world! CWD = /home/hakon/pp
Создать сценарий теста Python, t.py
:
import os
os.system("./hello")
Запустите сценарий Python:
$ python3 t.py
Hello world! CWD = /home/hakon/pp
Я также протестировал это с контейнером Docker, куда я перенес скомпилированный исполняемый файл hello
в контейнер и затем запустил hello
из контейнера.
Примечание:
Если вы перенесете этот исполняемый файл на компьютер с другой версией библиотек ядра (например, glibc
), отличной от используемой на машина, на которой был создан исполняемый файл, может не запускаться на целевом компьютере. См. этот пост для аналогичной проблемы в Python и дальнейшее обсуждение этой проблемы.