Thread Perl Bytecode: Wie erzeuge ich Bytecode richtig? (1 answers)
Opened by Gast at 2004-01-06 09:33

Gast Gast
 2004-01-06 09:33
#78313 #78313
Hallo,

ich habe ein kleines Problem...

ich habe ein Messscript für HTTP geschrieben (unten ist der Anfang des Scripts), dieses Script muß nun aber auf allen Systemen laufen (Solaris 2.6-2.8, SuSE/Redhat).
Na kein Problem, denkt sich der Orthi, und macht das ganze in Perl.

Nun ist es aber so das ich auch verschiedene Perl-Versionen habe, die ich nicht verändern kann/darf. Ebenso sind bei einigen Systemen keine Libs drauf.

Kein Problem denkt sich der Orthi und schiebt die Libs von Perl 5.8 (SuSE-Linux) mit in das Paket, und testet es auf einem Solaris-System 2.6. Geht natürlich nicht.

Also denk ich mir okay, compilierst es... ach geht ja nich, verschiedene Prozessortypen, aber da geht ja noch der Bytecode.

Gemacht getan, Compilieren geht ohne Fehlermeldung. Habe dann mal kurz in die Ausgabedatei von perlcc "a.out" reingeschaut und hier die ersten Zeilen angefügt:

#!/usr/bin/perl
use ByteLoader 0.04;
PLBCi586-linux0.040x1234


"#$%&'()*+,-.



Wenn ich "a.out" mit der notwenigen Option ausführe bekomme ich folgende Fehlermeldungen:

Script-GUI:/opt/nomanager/scripts # ./a.out ../conf/http.conf
Attempt to free unreferenced scalar at ./a.out line 2.
Attempt to free unreferenced scalar at ./a.out line 2.
Can't call method "push_header" on an undefined value at /usr/lib/perl5/site_perl/5.6.1/HTTP/Headers.pm line 353.
Segmentation fault


Und nochmal der Anfang vom Script:

Script-GUI:/opt/nomanager/scripts # more messung_http.pl
#!/usr/local/bin/perl -I/opt/nomanager/perl-libs

#
# Ausführungsstring: perl -I/opt/nomanager/perl-libs httptest.pl <CONF>
#

#if ( $ENV{performancehttp} eq "checked" ) { exit 0; };
use Time::HiRes qw (gettimeofday);
use LWP;
use MIME::Base64;
use IO::Socket::INET;



Was mache ich Falsch?
Das Script hat ca. 15000 Byte, als Bytecode hat es über 1 MB, daher gehe ich davon aus das die Module mit in dem Bytecode enthalten sind (außer das Modul "Bytecode" natürlich), und daher nicht auf den anderen Systemen benötigt werden.
Ist diese Annahme richtig?[B]

View full thread Perl Bytecode: Wie erzeuge ich Bytecode richtig?