Hallo Fachleute! Kann ich aus einem Perl-Skript aus ausführbare Anwendung erstellen die ohne Interpreter läuft? Wenn ja wie geht so etwas? Danke hans
Mensch, wieso wird solchen faulen Säuen auch noch geantwortet? Sowat reescht misch uff!
@G4st: Vielen Dank für den Link. @noch gast: Behalt dein ganzes Wissen inclusive diesem Gesülze hier für Dich. Du musst hier niemanden helfen. Grab Dich ein, lerne aber vorher Deutsch.
eigentlich hat "nochn gast" schon recht. In google findet man äuserst schnell sowas - ich z.B. einfach mal mit "perl exe", und schon isses der erste Link, und noch etliche mehr. Aber was solls - war schon öfters in der Diskussion hier ...
Hmm.. Google ist nicht der Weisheit letzter Schluss, insbesondere nicht bei komplexen Themen und sehr einseitigen Suchbegriffen. Um ein Perlprogramm in eine Ausführbare Datei zu verpacken gibt es jede menge Möglichkeiten, wobei alle die mir bekannt irgendwo gravierende Nachteile aufweisen. B::C Der 'simple' Perl nach C Übersetzer. Funktioniert je nach Programm mal, mal nicht, eher nicht. Erzeugt C Code des Programms (also nur der .pl File), um (perl-) Module und (kompilierte-) Libs musst du dich selber Kümmern. Funktioniert, wenn überhaupt, nur bei recht simplen Programmen die keine XSUBs benutzen. B::CC Der 'fortgeschrittene' Perl nach C Übersetzer. Ist in den letzten Versionen halbwegs brauchbar geworden, verändert aber die Perl Semantik in teilweise sehr überraschenden Punkten (da Compile und Runtime Kontext von manchen Konstrukten geändert werden). Funktioniert bei Simplen Programmen recht zuverlässig, wenn man sich beim schreiben der Einschränkungen bewusst ist und nur Module verwendet die damit zusammenarbeiten (weiss man dummerweise im Voraus nur selten). Verarbeitet auch nur die eigentliche Programmdatei, libs, Module etc. sind dein Problem. ActiveState PDK (oder so) Im PDK wird ein Tool mitgeliefert dass dein Perlprogramm zusammen mit den Verwendeten Modulen, und anderen Ressourcen in einen Ausführbaren Container verpackt. (Ob dll's die zu den Modulen gehören mit gepackt werden weiss ich leider nicht). Funktioniert mit fast jedem Programm, hat allerdings einige Haken: 1. Kostet Geld (gibt aber eine Eval-Version) 2. Funktioniert auschliesslich mit ActivePerl (auf dem Entwicklungsrechner, für die Zielumgebung wird ja alles mitgeliefert) 3. Module lassen sich anscheinend nur welche verwenden die keinen Compiler erfordern oder als ppm von ActiveState angeboten werden. Selbstkompilierte Module aus'm CPAN habe ich damit nicht zum laufen gebracht. (Ich habe es aber auch nicht Exzessiv versucht, da ich alternativen (s.U.) fand) PAR / pp PAR ist ein Framework um Perlprogramme in leicht auszuliefernde Container zu verpacken. PAR ist recht komplex und bietet viele Möglichkeiten (ausreichend um sich mehrmals in den Fuß zu schießen). Unter anderem kannst du aus einem Perlprogramm eine Ausführbare Datei machen die sämtliche Module, Libs und den Perlinterpreter enthält. Funktioniert mit 95+ % der Programme, kann aber eine Menge Arbeit machen bis alles läuft, manche verwendete Module erkennt es nicht automatisch, manche Libs müssen von Hand mit dazu gepackt werden, etc. Einige Spezialitäten, beispielsweise per Inline::C zur Runtime kompilierte C Routinen laufen mit PAR überhaupt nicht, oder nur sehr widerwillig. Mit pp 'verexete' Programme sind eigentlich nur Ziparchive mit davorgeklatschtem Loader, der Sourcecode ist also ohne weiteres Einsehbar (lässt sich aber mehr oder weniger wirkungsvoll verhindern). Es gibt noch ein Paar weitere Tools, welche ähnliches leisten, oder ähnliche Zielsetzungen haben, ich halte jedoch keine davon für erwähnenswert. Egal für welche Möglichkeit man sich entscheidet, wenn das Ausgangsprogramm eine gewisse Komplexität aufweist wird das Verpacken, zumindest einmalig, eine Menge Arbeit sein. Die meisten Chancen das es klappt hat man mit PAR/pp, allerdings in der Regel auch mit der meisten Arbeit verbunden. Das Tool aus dem PDK ist out-of-the-box am schnellsten zu benutzen, sofern man mit den Einschränkungen leben kann und bereit ist Geld dafür auszugeben. B::C und B::CC können funktionieren, die Regel ist es aber nicht. Dafür kann B::CC unter Umständen die Performance Laufzeit enorm steigern. Ich persönlich habe alle schon ausprobiert, und verwende wenn es Sinnvoll erscheint PAR/pp. YMMV -blade, JAPH
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.