DBD::Informix on 64 bit AIX: can"t install

DBD::Informix on 64 bit AIX: can"t install

am 04.02.2005 00:59:35 von jhannah

Do I need to manually build a 64-bit Perl on this AIX box? Will that offset the problem?

Thanks,

j

Installing DBD::Informix...
# perl Makefile.PL
*** ExtUtils::AutoInstall version 0.61
*** Checking for dependencies...
[Core Features]
- DBI ...loaded. (1.47 >= 1.33)
[High Resolution Timing]
- Time::HiRes ...loaded. (1.66)
*** ExtUtils::AutoInstall configuration finished.
Subroutine main::WriteMakefile redefined at /usr/opt/perl5/lib/site_perl/5.8.2/ExtUtils/AutoInstall.pm line 487.

Configuring IBM Informix Database Driver for Perl Version 2003.04 (2003-03-05) (aka DBD::Informix)
You are using DBI version 1.47 and Perl version 5.008002
Remember to actually read the README file!

Perl: perl5.008002 aix-thread-multi dl_aix.xs
System: aix perlfly 2 5 000ad7df4c00
Compiler: cc_r -O -D_ALL_SOURCE -D_ANSI_C_SOURCE -D_POSIX_SOURCE -qmaxmem=16384 -qnoansialias -DUSE_NATIVE_DLOPEN -DNEED_PTHREAD_INIT -q32 -D_LARGE_FILES -qlonglong
Loader: ld

Using IBM Informix CSDK Version 2.81, IBM Informix-ESQL Version 9.53.FC2 from /usr/informix/prod

Beware: DBD::Informix is not yet aware of all the new IUS data types.

Assert macro will be disabled!

lib/DBD/Informix/Defaults.pm written OK
esqlvrsn.h written OK
esqlinfo.h written OK

Testing whether your Informix test environment will work...
ld: 0711-738 ERROR: Input file esqltest.o:
XCOFF32 object files are not allowed in 64-bit mode.
Failed to link test program esqltest




# perl -V
Summary of my perl5 (revision 5.0 version 8 subversion 2) configuration:
Platform:
osname=aix, osvers=5.2.0.0, archname=aix-thread-multi
uname='aix perlfly 2 5 000ad7df4c00 '
config_args=''
hint=previous, useposix=true, d_sigaction=define
usethreads=define use5005threads=undef useithreads=define usemultiplicity=define
useperlio=define d_sfio=undef uselargefiles=define usesocks=undef
use64bitint=undef use64bitall=undef uselongdouble=undef
usemymalloc=n, bincompat5005=undef
Compiler:
cc='cc_r', ccflags ='-D_ALL_SOURCE -D_ANSI_C_SOURCE -D_POSIX_SOURCE -qmaxmem=16384 -qnoansialias -DUSE_NATIVE_DLOPEN -DNEED_PTHREAD_INIT -q32 -D_LARGE_FILES -qlonglong',
optimize='-O',
cppflags='-D_ALL_SOURCE -D_ANSI_C_SOURCE -D_POSIX_SOURCE -qmaxmem=16384 -qnoansialias -DUSE_NATIVE_DLOPEN -DNEED_PTHREAD_INIT -D_ALL_SOURCE -D_ANSI_C_SOURCE -D_POSIX_SOURCE -qmaxmem=16384 -qnoansialias -DUSE_NATIVE_DLOPEN -DNEED_PTHREAD_INIT -q32 -D_LARGE_FILES -qlonglong -D_ALL_SOURCE -D_ANSI_C_SOURCE -D_POSIX_SOURCE -qmaxmem=16384 -qnoansialias -DUSE_NATIVE_DLOPEN -DNEED_PTHREAD_INIT -q32 -D_LARGE_FILES -qlonglong -D_ALL_SOURCE -D_ANSI_C_SOURCE -D_POSIX_SOURCE -qmaxmem=16384 -qnoansialias -DUSE_NATIVE_DLOPEN -DNEED_PTHREAD_INIT -q32 -D_LARGE_FILES -qlonglong -D_ALL_SOURCE -D_ANSI_C_SOURCE -D_POSIX_SOURCE -qmaxmem=16384 -qnoansialias -DUSE_NATIVE_DLOPEN -DNEED_PTHREAD_INIT -q32 -D_LARGE_FILES -qlonglong -D_ALL_SOURCE -D_ANSI_C_SOURCE -D_POSIX_SOURCE -qmaxmem=16384 -qnoansialias -DUSE_NATIVE_DLOPEN -DNEED_PTHREAD_INIT -q32 -D_LARGE_FILES -qlonglong -D_ALL_SOURCE -D_ANSI_C_SOURCE -D_POSIX_SOURCE -qmaxmem=16384 -qnoansialias -DUSE_NATIVE_DLOPEN -DNEED_PTHREAD_INIT -q32 -D_!
LARGE_FILES -qlonglong'
ccversion='', gccversion='', gccosandvers=''
intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=4321
d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=8
ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8
alignbytes=8, prototype=define
Linker and Libraries:
ld='ld', ldflags =' -brtl -b32 -bmaxdata:0x80000000'
libpth=/lib /usr/lib /usr/ccs/lib
libs=-lbind -lnsl -ldbm -ldl -lld -lm -lpthreads -lc_r -lcrypt -lbsd -lPW
perllibs=-lbind -lnsl -ldl -lld -lm -lpthreads -lc_r -lcrypt -lbsd -lPW
libc=/lib/libc.a, so=a, useshrplib=true, libperl=libperl.a
gnulibc_version=''
Dynamic Linking:
dlsrc=dl_aix.xs, dlext=so, d_dlsymun=undef, ccdlflags='-bE:/usr/opt/perl5/lib/5.8.2/aix-thread-multi/COR E/perl.exp -bE:/usr/opt/perl5/lib/5.8.2/aix-thread-multi/CORE/perl.exp -bE:/usr/opt/perl5/lib/5.8.2/aix-thread-multi/CORE/perl.exp -bE:/usr/opt/perl5/lib/5.8.2/aix-thread-multi/CORE/perl.exp'
cccdlflags=' ', lddlflags='-bhalt:4 -bM:SRE -bI:$(PERL_INC)/perl.exp -bE:$(BASEEXT).exp -bnoentry -lpthreads -lc_r'


Characteristics of this binary (from libperl):
Compile-time options: MULTIPLICITY USE_ITHREADS USE_LARGE_FILES PERL_IMPLICIT_CONTEXT
Built under aix
Compiled at Feb 13 2004 13:18:17
@INC:
/usr/opt/perl5/lib/5.8.2/aix-thread-multi
/usr/opt/perl5/lib/5.8.2
/usr/opt/perl5/lib/site_perl/5.8.2/aix-thread-multi
/usr/opt/perl5/lib/site_perl/5.8.2
/usr/opt/perl5/lib/site_perl
.

Re: DBD::Informix on 64 bit AIX: can"t install

am 04.02.2005 18:51:02 von jonathan.leffler

Dear Jay,

Thanks for using the error reporting mechanism supplied with
DBD::Informix (or providing the equivalent information); it makes it
so much easier to help you when the necessary information is all
available.

On Thu, 3 Feb 2005 23:59:35 -0000, Jay Hannah wrote:
> Do I need to manually build a 64-bit Perl on this AIX box? Will that offset the problem?

Either that or get a 32-bit (9.53.UCx) version of ESQL/C (2.81.UCx
version of ClientSDK).

If you note the options to the C compiler, they include: -q32

This, I'm pretty sure, tries to compile stuff in 32-bit mode, rather
than 64-bit mode. And you can't mix 32-bit objects with 64-bit
objects -- hence the error.

I note that the Perl you have installed has both threads and
multiplicity -- you may want to specify
DBD_INFORMIX_ESQLC_LINKAGE="-shared -thread" in the environment to
pick up the ESQL/C thread-safe shared libraries. I'm not sure whether
multiplicity has an effect on DBI or DBD::Informix -- I think it's
something to do with being able to have multiple Perl interpreters
loaded into a single executable.

> Installing DBD::Informix...
> # perl Makefile.PL
> *** ExtUtils::AutoInstall version 0.61
> *** Checking for dependencies...
> [Core Features]
> - DBI ...loaded. (1.47 >= 1.33)
> [High Resolution Timing]
> - Time::HiRes ...loaded. (1.66)
> *** ExtUtils::AutoInstall configuration finished.
> Subroutine main::WriteMakefile redefined at /usr/opt/perl5/lib/site_perl/5.8.2/ExtUtils/AutoInstall.pm line 487.
>
> Configuring IBM Informix Database Driver for Perl Version 2003.04 (2003-03-05) (aka DBD::Informix)
> You are using DBI version 1.47 and Perl version 5.008002
> Remember to actually read the README file!
>
> Perl: perl5.008002 aix-thread-multi dl_aix.xs
> System: aix perlfly 2 5 000ad7df4c00
> Compiler: cc_r -O -D_ALL_SOURCE -D_ANSI_C_SOURCE -D_POSIX_SOURCE -qmaxmem=16384 -qnoansialias -DUSE_NATIVE_DLOPEN -DNEED_PTHREAD_INIT -q32 -D_LARGE_FILES -qlonglong
> Loader: ld
>
> Using IBM Informix CSDK Version 2.81, IBM Informix-ESQL Version 9.53.FC2 from /usr/informix/prod
>
> Beware: DBD::Informix is not yet aware of all the new IUS data types.
>
> Assert macro will be disabled!
>
> lib/DBD/Informix/Defaults.pm written OK
> esqlvrsn.h written OK
> esqlinfo.h written OK
>
> Testing whether your Informix test environment will work...
> ld: 0711-738 ERROR: Input file esqltest.o:
> XCOFF32 object files are not allowed in 64-bit mode.
> Failed to link test program esqltest
>
> # perl -V
> Summary of my perl5 (revision 5.0 version 8 subversion 2) configuration:
> Platform:
> osname=aix, osvers=5.2.0.0, archname=aix-thread-multi
> uname='aix perlfly 2 5 000ad7df4c00 '
> config_args=''
> hint=previous, useposix=true, d_sigaction=define
> usethreads=define use5005threads=undef useithreads=define usemultiplicity=define
> useperlio=define d_sfio=undef uselargefiles=define usesocks=undef
> use64bitint=undef use64bitall=undef uselongdouble=undef
> usemymalloc=n, bincompat5005=undef
> Compiler:
> cc='cc_r', ccflags ='-D_ALL_SOURCE -D_ANSI_C_SOURCE -D_POSIX_SOURCE -qmaxmem=16384 -qnoansialias -DUSE_NATIVE_DLOPEN -DNEED_PTHREAD_INIT -q32 -D_LARGE_FILES -qlonglong',
> optimize='-O',
> cppflags='-D_ALL_SOURCE -D_ANSI_C_SOURCE -D_POSIX_SOURCE -qmaxmem=16384 -qnoansialias -DUSE_NATIVE_DLOPEN -DNEED_PTHREAD_INIT -D_ALL_SOURCE -D_ANSI_C_SOURCE -D_POSIX_SOURCE -qmaxmem=16384 -qnoansialias -DUSE_NATIVE_DLOPEN -DNEED_PTHREAD_INIT -q32 -D_LARGE_FILES -qlonglong -D_ALL_SOURCE -D_ANSI_C_SOURCE -D_POSIX_SOURCE -qmaxmem=16384 -qnoansialias -DUSE_NATIVE_DLOPEN -DNEED_PTHREAD_INIT -q32 -D_LARGE_FILES -qlonglong -D_ALL_SOURCE -D_ANSI_C_SOURCE -D_POSIX_SOURCE -qmaxmem=16384 -qnoansialias -DUSE_NATIVE_DLOPEN -DNEED_PTHREAD_INIT -q32 -D_LARGE_FILES -qlonglong -D_ALL_SOURCE -D_ANSI_C_SOURCE -D_POSIX_SOURCE -qmaxmem=16384 -qnoansialias -DUSE_NATIVE_DLOPEN -DNEED_PTHREAD_INIT -q32 -D_LARGE_FILES -qlonglong -D_ALL_SOURCE -D_ANSI_C_SOURCE -D_POSIX_SOURCE -qmaxmem=16384 -qnoansialias -DUSE_NATIVE_DLOPEN -DNEED_PTHREAD_INIT -q32 -D_LARGE_FILES -qlonglong -D_ALL_SOURCE -D_ANSI_C_SOURCE -D_POSIX_SOURCE -qmaxmem=16384 -qnoansialias -DUSE_NATIVE_DLOPEN -DNEED_PTHREAD_INIT -q32 -D_!
> LARGE_FILES -qlonglong'
> ccversion='', gccversion='', gccosandvers=''
> intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=4321
> d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=8
> ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8
> alignbytes=8, prototype=define
> Linker and Libraries:
> ld='ld', ldflags =' -brtl -b32 -bmaxdata:0x80000000'
> libpth=/lib /usr/lib /usr/ccs/lib
> libs=-lbind -lnsl -ldbm -ldl -lld -lm -lpthreads -lc_r -lcrypt -lbsd -lPW
> perllibs=-lbind -lnsl -ldl -lld -lm -lpthreads -lc_r -lcrypt -lbsd -lPW
> libc=/lib/libc.a, so=a, useshrplib=true, libperl=libperl.a
> gnulibc_version=''
> Dynamic Linking:
> dlsrc=dl_aix.xs, dlext=so, d_dlsymun=undef, ccdlflags='-bE:/usr/opt/perl5/lib/5.8.2/aix-thread-multi/COR E/perl.exp -bE:/usr/opt/perl5/lib/5.8.2/aix-thread-multi/CORE/perl.exp -bE:/usr/opt/perl5/lib/5.8.2/aix-thread-multi/CORE/perl.exp -bE:/usr/opt/perl5/lib/5.8.2/aix-thread-multi/CORE/perl.exp'
> cccdlflags=' ', lddlflags='-bhalt:4 -bM:SRE -bI:$(PERL_INC)/perl.exp -bE:$(BASEEXT).exp -bnoentry -lpthreads -lc_r'
>
> Characteristics of this binary (from libperl):
> Compile-time options: MULTIPLICITY USE_ITHREADS USE_LARGE_FILES PERL_IMPLICIT_CONTEXT
> Built under aix
> Compiled at Feb 13 2004 13:18:17
> @INC:
> /usr/opt/perl5/lib/5.8.2/aix-thread-multi
> /usr/opt/perl5/lib/5.8.2
> /usr/opt/perl5/lib/site_perl/5.8.2/aix-thread-multi
> /usr/opt/perl5/lib/site_perl/5.8.2
> /usr/opt/perl5/lib/site_perl
> .
>
>


--
Jonathan Leffler #include
Guardian of DBD::Informix - v2003.04 - http://dbi.perl.org
"I don't suffer from insanity - I enjoy every minute of it."

Re: DBD::Informix on 64 bit AIX: can"t install

am 05.02.2005 01:00:20 von jonathan.leffler

On Fri, 4 Feb 2005 12:58:29 -0600, Jay Hannah wrote:
> > > Do I need to manually build a 64-bit Perl on this AIX box?
> > > Will that offset the problem?
> >
> > Either that or get a 32-bit (9.53.UCx) version of ESQL/C (2.81.UCx
> > version of ClientSDK).
>
> Turns out this box had 2 perls on it: 32-bit and 64-bit.
>
> Using the 64-bit perl, DBD::Informix installed just fine. THANKS!


> > I note that the Perl you have installed has both threads and
> > multiplicity -- you may want to specify
> > DBD_INFORMIX_ESQLC_LINKAGE="-shared -thread" in the environment to
> > pick up the ESQL/C thread-safe shared libraries. I'm not sure whether
> > multiplicity has an effect on DBI or DBD::Informix -- I think it's
> > something to do with being able to have multiple Perl interpreters
> > loaded into a single executable.
>
> I'm up and running now, so I'm hesitant to fiddle with things. Would "-shared -thread" be a
> performance boost? A significant one? (I suppose that would depend on what I'm doing?)

You should be OK - especially if you don't use the threading
capability of your Perl. I think DBI ensures single-threading through
its code, and hence for the drivers that are called from DBI, so even
without ensuring you use the Informix threaded libraries, you should
be OK.

So, leave alone unless you start using multi-threading (and
multi-threading was in the 64-bit Perl as well as the 32-bit version)
*and* you run into problems.

--
Jonathan Leffler #include
Guardian of DBD::Informix - v2003.04 - http://dbi.perl.org
"I don't suffer from insanity - I enjoy every minute of it."