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 08:19, Chunmei Wu wrote:
> Hi Martin, Reinhard and Jens,

Please do not top-post

> Thanks for your advice. Following is related info you referred:
>
> 1>  Are all the components in your chain (perl, driver manager, driver) all64 bit?
> [Chunmei]: The unixODBC driver and the DB2 driver are 64bit. Seems that my perl is 32bit from following info. Is this the reason for my error????

The chance for it is near 100%
Can you use either 32-bit lib for DB2 and unixODBC or rebuild your perl 
using 64bit?

> 	unixuser\@dsliaa05 #>  file perl
> 	perl: executable (RISC System/6000) or object module
[...]

> Characteristics of this binary (from libperl):
>    Compile-time options: USE_LARGE_FILES
>    Locally applied patches:
>          IndigoPerl Build 804
>    Built under aix
>    Compiled at Feb  9 2003 13:22:48
[...]

> 4>  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
> [Chunmei]: I did it, but I didn't get any error when run 'make':
>      a) perl Makefile.PL
> 	Warning: LD_LIBRARY_PATH doesn't include /home/eng-sm/unixuser/claire/test/perl/unixodbc_install2.3.0_64/
> 	[Chunmei]: the warning is strange. Even I set this environment to include this directory, it still report such warning. Meanwhile, I think AIX didn't use this environment but LIBPATH.
> 	WARNING: NO_META is not a known parameter.

Please do not guess which information we need - please attache the entire 
log as I told you. The warning is useful to add a patch to the Makefile.PL 
to recognize LIBPATH on AIX, but nothing else

> 	b) make
> 	NO warning.

What -L paths? What RPATH are used. Are some previous RPATH are overwritten 
by later options? What compiler/linker flags where used?

I think, all DBD's should include the links to 
http://www.catb.org/~esr/faqs/smart-questions.html and 
http://www.chiark.greenend.org.uk/~sgtatham/bugs.html ...

> 	c) make test
> 	The error 'can't load library...' occur.
>
> 5>  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.
> [Chunmei]: Following command is used to create ODBC.so:
> LD_RUN_PATH="/home/eng-sm/unixuser/claire/test/perl/unixodbc_install2.3.0_64/lib" ld  -bhalt:4 -bM:SRE -bI:/vobs/vob_src_3rdparty/src/3rdparty/perl2exe/aix/perl2exe/perl5.8/lib/5.8.0/aix/CORE/perl.exp -bE:ODBC.exp -bnoentry -lC -lc ConvertUTF.o ODBC.o dbdimp.o unicode_helper.o  -o blib/arch/auto/DBD/ODBC/ODBC.so   -L/home/eng-sm/unixuser/claire/test/perl/unixodbc_install2.3.0_64/lib -lodbc
>
> No error reports during the build and the ldd also is ok.

Probably.

> 6>  Maybe it is only a question of dynamic loaded libraries not included in the search path. If I remember well there is a LD_LIBRARY_PATH variable you can add locations where to search libraries to be loaded when executing the program.
> [Chunmei]: AIX uses LIBPATH instead of LD_LIBRARY_PATH to search libraries. The value of $LIBPATH is "/home/eng-sm/unixuser/claire/test/perl/unixodbc_install2.3.0_64//lib:/usr/lib:/lib:/opt/IBM/db2/V9.7/lib64" in my environment.

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.