• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Perl-Prob: Kann die Shared-Object-Datei nicht öffnen

awagner

Member
Hi alle,

da ich genauer verstehen möchte, was hier passiert, frage ich mal im Programmierungs-Forum, und nicht in einem der Anwendungs-Foren. Wenn das doch eher dorthin gehört, bitte verschieben (und sorry).

Ich versuche jetzt seit längerem, Disc-Cover auf meinem neuen SuSE 9.2/64Bit ins Laufen zu bekommen. Ich hab' so 'ne Ahnung, dass das mit der Aufteilung in /usr/lib/perl... und /usr/lib64/perl... zu tun hat, aber die versteh' ich schon selbst nicht so genau.

Die Fehlermeldung ist:
Code:
Can't load '/usr/lib/perl5/5.8.5/x86_64-linux-thread-multi/auto/Audio/CD/CD.so' for module Audio::CD: /usr/lib/perl5/5.8.5/x86_64-linux-thread-multi/auto/Audio/CD/CD.so: Kann die Shared-Object-Datei nicht öffnen: Datei oder Verzeichnis nicht gefunden at /usr/lib/perl5/5.8.5/x86_64-linux-thread-multi/DynaLoader.pm line 230.
 at /home/wagner/bin/disc-cover line 165
Compilation failed in require at /home/wagner/bin/disc-cover line 165.

Und die betr. Passage in disc-cover sieht so aus:
Code:
unless ($inputfile)
{
        require Audio::CD;
}

Achja, das kann ich auch noch liefern:
in /usr/lib/perl5/5.8.5/x86_64-linux-thread-multi/auto gibt's gar kein Verzeichnis 'Audio'
Das ist vielmehr in /usr/lib/perl5/site-perl/5.8.5/x86_64-linux-thread-multi/auto, mit Verz. CD und CD.so

In /usr/lib/perl5/5.8.5/x86_64-linux-thread-multi/DynaLoader.pm
sieht's ab Zeile 223 so aus:
Code:
    # Many dynamic extension loading problems will appear to come from
    # this section of code: XYZ failed at line 123 of DynaLoader.pm.
    # Often these errors are actually occurring in the initialisation
    # C code of the extension XS file. Perl reports the error as being
    # in this perl code simply because this was the last perl code
    # it executed.

    my $libref = dl_load_file($file, $module->dl_load_flags) or
        croak("Can't load '$file' for module $module: ".dl_error());
...sagt mir aber nix, außer dass ich nicht glaube dass disc-cover C code benutzt.

CPAN sagt mir Audio::CD ist up-to-date

Sucht DynaLoader jetzt an der falschen Stelle? Wie kann ich das geradeziehen? (Ein symlink von perl5/5.8.5/x86_64-linux-thread-multi/auto/CD auf perl/site-perl/5.8.5/x86_64-linux-thread-multi/auto/CD hat nix geholfen.)


Ich hoffe, Ihr könnt mir helfen und ein wenig Licht ins Dunkel bringen.
Vielen Dank,
Andreas
 

regexer

Advanced Hacker
awagner schrieb:
Ich hab' so 'ne Ahnung, dass das mit der Aufteilung in /usr/lib/perl... und /usr/lib64/perl... zu tun hat,
Könnte sein. Der Pfad für Perlmodule ist @INC. Vielleicht fehlen dort Einträge. Außerdem würde ich nachsehen, ob es "CD.so" in den Lib-Verzeichnissen mehrmals gibt.
 
Oben