web-dev-qa-db-fra.com

Comment puis-je compiler mon script Perl afin qu'il puisse être exécuté sur des systèmes sans Perl installé?

J'ai un .pl fichier et je veux exécuter ce fichier dans n'importe quel système même si Perl n'est pas installé. Comment puis-je y parvenir?

Quelqu'un peut-il me le faire savoir avec de bons exemples pour le faire?

52
User1611

pp peut créer un exécutable qui inclut Perl et votre script (et toutes les dépendances de module), mais il sera spécifique à votre architecture, vous ne pouvez donc pas l'exécuter sur Windows et linux par exemple.

De son doc:

Pour créer un exécutable autonome, adapté à une exécution sur une machine sur laquelle Perl n'est pas installé:

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

(% et $ il y a des invites de commande sur différentes machines).

42
ysth
  1. Installer PAR::Packer . Exemple pour * nix:

    Sudo cpan -i PAR :: Packer

    Pour Strawberry Perl pour Windows ou pour ActivePerl et MSVC installés:

    cpan -i PAR :: Packer
  2. Emballez-le avec pp . Il créera un exécutable nommé "exemple" ou "exemple.exe" sous Windows.

    pp -o exemple example.pl

Cela ne fonctionnerait que sur le système d'exploitation où il a été construit.

P.S. Il est vraiment difficile de trouver un clone Unix sans Perl. Voulez-vous dire Windows?

29
Alexandr Ciornii

De la réponse de perlfaq3 à Comment puis-je compiler mon programme Perl en code octet ou C? :


(contribution de brian d foy)

En général, vous ne pouvez pas faire cela. Cependant, il y a certaines choses qui peuvent fonctionner pour votre situation. Les gens posent généralement cette question parce qu'ils veulent distribuer leurs œuvres sans donner le code source, et la plupart des solutions échangent de l'espace disque pour plus de commodité. Vous ne verrez probablement pas non plus une augmentation de vitesse, car la plupart des solutions regroupent simplement un interpréteur Perl dans le produit final (mais voir Comment puis-je accélérer le fonctionnement de mon programme Perl?).

Perl Archive Toolkit ( http://par.Perl.org/ ) est l'analogue de Perl au JAR de Java. Il est disponible gratuitement et sur CPAN ( http://search.cpan.org/dist/PAR/ ).

Il existe également des produits commerciaux qui peuvent fonctionner pour vous, bien que vous deviez acheter une licence pour eux.

Le kit de développement Perl ( http://www.activestate.com/Products/Perl_Dev_Kit/ ) d'ActiveState peut "Transformer vos programmes Perl en prêts à l'emploi exécutables pour HP-UX, Linux, Solaris et Windows. "

Perl2Exe ( http://www.indigostar.com/Perl2exe.htm ) est un programme en ligne de commande pour convertir des scripts Perl en fichiers exécutables. Il cible à la fois les plates-formes Windows et Unix.

8
brian d foy

Regardez PAR (Perl Archiving Toolkit).

PAR est un outil d'empaquetage et de déploiement multiplateforme, surnommé comme un croisement entre Java JAR et Perl2EXE / PerlApp .

7
Jared Oberhaus

Et n'oublions pas PDK d'ActiveState . Il vous permettra de compiler l'interface utilisateur, la ligne de commande, les services Windows et les installateurs.

Je le recommande vivement, il m'a très bien servi au fil des ans, mais c'est environ 300 $ pour une licence.

6
Mathieu Longtin

Note à Sinan et à Brian: perlfaq3 a toujours tort.

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

5
rurban

Cava Packager est excellent sur l'écosystème Windows.

3
Rick

Les fichiers Perl sont des scripts, pas des programmes exécutables. Par conséquent, pour qu'ils "courent", ils auront besoin d'un interprète.

Ainsi, vous avez deux choix: 1) avoir l'interprète sur la machine sur laquelle vous souhaitez exécuter le script, ou 2) faire exécuter le script sur une machine en réseau (ou Internet) à laquelle vous vous connectez à distance (c'est-à-dire avec un navigateur)

1
David Lewis

Sur MaxOSX, il peut y avoir perlcc . Tapez man perlcc. Sur mon système (10.6.8), il se trouve dans/usr/bin. YMMV

Voir http://search.cpan.org/~nwclark/Perl-5.8.9/utils/perlcc.PL

0
Klaas Z4us V