Hallo,
ich habe ein ganz komisches Phänomen, das aber nur einer IBM-Maschine auftritt:
Ich weiß nicht mehr genau warum, aber die Umgebungsvariable "LD_PRELOAD" muss gesetzt sein.
Wenn ich LD_PRELOAD auf der Shell setze, kann ich mich mit der Datenbank verbinden;
Wenn ich diese Variable im perl-Skript setze bekomme ich einen bösen Absturz.
Woran kann das liegen?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
mcefors(251) /forsgb/cmd.ptf >cat test
#!/usr/local/bin/perl -w
use strict;
$ENV{LD_PRELOAD} = '/usr/lib/libcl.2';
my $modul = "DBI";
eval "use $modul";
print $@ if $@;
print "DBI-Modul geladen\n";
system('echo LD_PRELOAD hat den Wert $LD_PRELOAD');
my $dbh = DBI->connect("dbi:Oracle:host=mcefors;sid=fors", 'forsmgr', 'forsmgr',
{ PrintError => 0, AutoCommit => 1 });
mcefors(252) /forsgb/cmd.ptf >export LD_PRELOAD=/usr/lib/libcl.2
mcefors(253) /forsgb/cmd.ptf >./test
DBI-Modul geladen
LD_PRELOAD hat den Wert /usr/lib/libcl.2
mcefors(254) /forsgb/cmd.ptf >unset LD_PRELOAD
mcefors(255) /forsgb/cmd.ptf >./test
DBI-Modul geladen
LD_PRELOAD hat den Wert /usr/lib/libcl.2
/usr/lib/dld.sl: Can't shl_load() a library containing Thread Local Storage: /us
r/lib/libcl.2
/usr/lib/dld.sl: Exec format error
install_driver(Oracle) failed: Can't load '/usr/local/lib/perl5/site_perl/5.6.1/
PA-RISC1.1-thread-multi/auto/DBD/Oracle/Oracle.sl' for module DBD::Oracle: Exec
format error at /usr/local/lib/perl5/5.6.1/PA-RISC1.1-thread-multi/DynaLoader.pm
line 206.
at (eval 2) line 3
Compilation failed in require at (eval 2) line 3.
Perhaps a required shared library or dll isn't installed where expected
at ./test line 10