Problem using LD_LIBRARY_PATH in perl script

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Christian Eriksson

    Problem using LD_LIBRARY_PATH in perl script

    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@S022203 5> echo $LD_LIBRARY_PAT H
    /SSW/informix/sdk2.50/lib:/SSW/informix/sdk2.50/lib/esql
    presto1@S022203 5> 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@S022203 5> ./ins_rutin.pl presto db-ladd-lan06
    presto1@S022203 5> 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@S022203 5> echo $LD_LIBRARY_PAT H
    /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_LIBRAR Y_PATH"}="/SSW/informix/sdk2.50/lib:/SSW/informix/sdk2.50/lib/esql";

    invoking the script gives this

    presto1@S022203 5> ./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@S022203 5> perl -v

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

    presto1@S022203 5> uname -a
    SunOS S0222035 5.8 Generic sun4us sparc FJSV,GPUS


    /Christian Eriksson
  • nobull@mail.com

    #2
    Re: Problem using LD_LIBRARY_PATH in perl script

    c-eriks@algonet.s e (Christian Eriksson) wrote in message news:<d0d6f67c. 0311241452.785f bbac@posting.go ogle.com>...[color=blue]
    > 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[/color]

    [ but if one...]
    [color=blue]
    > ...instead adds a row setting LD_LIBRARY_PATH in the perl script[/color]
    [color=blue]
    > Perhaps a required shared library or dll isn't installed where
    > expected[/color]
    [color=blue]
    > Why does this happen?[/color]

    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.
    [color=blue]
    > This is perl, v5.6.1 built for sun4-solaris[/color]

    I vaguely recall Solaris is such a platform.

    This newsgroup does not exist (see FAQ). Please do not start threads
    here.

    Comment

    Working...