By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
435,106 Members | 2,335 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 435,106 IT Pros & Developers. It's quick & easy.

Problem using LD_LIBRARY_PATH in perl script

P: n/a
Hi!

I have a problem using the environment variable LD_LIBRARY_PATH in my
perl script. Everything works fine when I set it at the command prompt
and then runs my perl script like this:

presto1@S0222035> echo $LD_LIBRARY_PATH
/SSW/informix/sdk2.50/lib:/SSW/informix/sdk2.50/lib/esql
presto1@S0222035> ldd
/usr/perl5/5.6.1/site_perl/sun4-solaris/auto/DBD/Informix.so
libifsql.so => /SSW/informix/sdk2.50/lib/esql/libifsql.so
libifasf.so => /SSW/informix/sdk2.50/lib/libifasf.so
libifgen.so => /SSW/informix/sdk2.50/lib/esql/libifgen.so
libifos.so => /SSW/informix/sdk2.50/lib/esql/libifos.so
libifgls.so => /SSW/informix/sdk2.50/lib/esql/libifgls.so
libnsl.so.1 => /usr/lib/libnsl.so.1
libsocket.so.1 => /usr/lib/libsocket.so.1
libaio.so.1 => /usr/lib/libaio.so.1
libm.so.1 => /usr/lib/libm.so.1
libdl.so.1 => /usr/lib/libdl.so.1
libelf.so.1 => /usr/lib/libelf.so.1
libifglx.so => /SSW/informix/sdk2.50/lib/esql/libifglx.so
libc.so.1 => /usr/lib/libc.so.1
libmp.so.2 => /usr/lib/libmp.so.2
/usr/platform/FJSV,GPUS/lib/libc_psr.so.1

and running

presto1@S0222035> ./ins_rutin.pl presto db-ladd-lan06
presto1@S0222035> echo $?
0

executes without error messages and carries out the expected
operations against the database.

On the other hand, when I have a LD_LIBRARY_PATH like

presto1@S0222035> echo $LD_LIBRARY_PATH
/SSW/informix9.4/lib:/SSW/informix9.4/lib/esql:/SSW/informix9.4/lib/tools

and instead adds a row setting LD_LIBRARY_PATH in the perl script

$ENV{"LD_LIBRARY_PATH"}="/SSW/informix/sdk2.50/lib:/SSW/informix/sdk2.50/lib/esql";

invoking the script gives this

presto1@S0222035> ./ins_rutin.pl presto db-ladd-lan06
install_driver(Informix) failed: Can't load
'/usr/perl5/5.6.1/site_perl/sun4-sol
aris/auto/DBD/Informix/Informix.so' for module DBD::Informix: ld.so.1:
/usr/bin/
perl: fatal: libifsql.so: open failed: No such file or directory at
/usr/perl5/5
..6.1/sun4-solaris/DynaLoader.pm line 206.
at (eval 1) line 3
Compilation failed in require at (eval 1) line 3.
Perhaps a required shared library or dll isn't installed where
expected
at ./ins_rutin.pl line 35

Why does this happen?

Some info:

presto1@S0222035> perl -v

This is perl, v5.6.1 built for sun4-solaris

presto1@S0222035> uname -a
SunOS S0222035 5.8 Generic sun4us sparc FJSV,GPUS
/Christian Eriksson
Jul 19 '05 #1
Share this Question
Share on Google+
1 Reply


P: n/a
c-*****@algonet.se (Christian Eriksson) wrote in message news:<d0**************************@posting.google. com>...
I have a problem using the environment variable LD_LIBRARY_PATH in my
perl script. Everything works fine when I set it at the command prompt
[ but if one...]
...instead adds a row setting LD_LIBRARY_PATH in the perl script Perhaps a required shared library or dll isn't installed where
expected Why does this happen?
When you set $ENV{LD_LIBRARY_PATH} do you do so before (that's
cronologically before, not lexically before) you try to load the
library? (Remember the Perl use() is compile-time).

IIRC on some platforms I think LD_LIBRARY_PATH is read from the
environment as the program loads and subsequent changes are ignored.
This is perl, v5.6.1 built for sun4-solaris


I vaguely recall Solaris is such a platform.

This newsgroup does not exist (see FAQ). Please do not start threads
here.
Jul 19 '05 #2

This discussion thread is closed

Replies have been disabled for this discussion.