Re: make test: dlopen error :can't load library ODBC.so

Jens Rehsack <[email protected]>
Newsgroups gmane.comp.lang.perl.modules.dbi.sybase.devel
Message-ID <[email protected]>
On 05/10/10 02:06, Chunmei Wu wrote:
> Hi everyone,
>
> OS: AIX
> perl version: 5.0
>
> After installed DBD-ODBC-1.21, I run 'make test', but failed 'can't load library' error:
>                              t/20SqlServer...........ok 2/65install_driver(ODBC) failed: Can't load '/home/eng-sm/unixuser/claire/test/perl/DBD-ODBC-1.21/blib/arch/auto/DBD/ODBC/ODBC.so' for module DBD::ODBC: dlopen: /home/eng-sm/unixuser/claire/test/perl/DBD-ODBC-1.21/blib/arch/auto/DBD/ODBC/ODBC.so: can't load library /home/eng-sm/unixuser/claire/test/perl/DBD-ODBC-1.21/blib/arch/auto/DBD/ODBC/ODBC.so103 /home/eng-sm/unixuser/claire/test/perl/DBD-ODBC-1.21/blib/arch/auto/DBD/ODBC/ODBC.so at /vobs/siebel/src/3rdparty/perl5.8/aix/lib/5.8.0/aix/DynaLoader.pm line 229.
>                               at (eval 4) line 3
>                              Compilation failed in require at (eval 4) line 3.
>                              Perhaps a required shared library or dll isn't installed where expected
>                               at t/20SqlServer.t line 218
>
> But i can run ldd for this library:
>                              unixuser\@dsliaa05 #>  ldd /home/eng-sm/unixuser/claire/test/perl/DBD-ODBC-1.21/blib/arch/auto/DBD/ODBC/ODBC.so
>                              /home/eng-sm/unixuser/claire/test/perl/DBD-ODBC-1.21/blib/arch/auto/DBD/ODBC/ODBC.so needs:
>                                       /usr/lib/libc.a(shr_64.o)
>                                       /home/eng-sm/unixuser/claire/test/perl/unixodbc_install2.3.0_64/lib/libodbc.a(libodbc.so.1)
>                                       /unix
>                                       /usr/lib/libcrypt.a(shr_64.o)
>                                       /usr/lib/libpthread.a(shr_xpg5_64.o)
>                                       /usr/lib/libiconv.a(shr4_64.o)
>
> Can you help me? Thanks in advance!

Looks to me like libperl.a is missing from the requirements list of ODBC.so.
As long you don't have statically linked the perl runtime, this could be an 
issue.

But the error reported is;

> dlopen: /home/eng-sm/unixuser/claire/test/perl/DBD-ODBC-1.21/blib/arch/auto/DBD/ODBC/ODBC.so: can't load library /home/eng-sm/unixuser/claire/test/perl/DBD-ODBC-1.21/blib/arch/auto/DBD/ODBC/ODBC.so103

The file 
/home/eng-sm/unixuser/claire/test/perl/DBD-ODBC-1.21/blib/arch/auto/DBD/ODBC/ODBC.so103 
is required for some reason. 'make test' runs with the same permissions as 
'make' run, I assume.

Looks to me like something went wrong with your build. I think it could be 
helpful (if no one else has a better proposal) to start fresh and record the 
entire make output in a file:
$ perl Makefile.PL [flags ...] >log 2>&1
$ make >log 2>&1
$ make test >log 2>&1

If you add some flags to one of the lines, it might be good to echo the line 
first to the log and execute it then.

/Jens
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.