Hello, I have an inline::c app that works just fine on a 32-bit linux box. The problem I have is trying to get it installed/working on a x86-64 SuSE 9.1 pro box. The inline::c app is a wrapper around a 32-bit third party library (closed source)
To get it to compile a 32 bit application, I have the following: use Inline C => Config => CC => 'gcc', CCFLAGS => '-m32', LD => 'gcc', LDDLFLAGS => '-m32 -shared', LIBS => '-L/opt/ams -lz4lnx', PRINT_INFO => 1, BUILD_NOISY => 1, INC => '-I/opt/ams'; The code compiles, but fails to load in the DynaLoader. I am guessing that it is a problem with 32 bit shared module being loaded into a 64 bit perl space, but I am guessing. Here is the trace of the compile: --BEGIN-- <-----------------------Information Section-----------------------------------> Information about the processing of your Inline C code: Your source code needs to be compiled. I'll use this build directory: /opt/project/zip4/_Inline/build/ZIP4_PARM_59d8 and I'll install the executable as: /opt/project/zip4/_Inline/lib/auto/ZIP4_PARM_59d8/ZIP4_PARM_59d8.so The following Inline C function(s) have been successfully bound to Perl: void DESTROY(SV * obj) char * abcty(SV * obj) char * addon(SV * obj) char * adrkey(SV * obj) char auto_zone_ind(SV * obj) char * county(SV * obj) char * cris(SV * obj) char * dadl1(SV * obj) char * dadl2(SV * obj) char * dadl3(SV * obj) char * dctya(SV * obj) char * dctys(SV * obj) char * dlast(SV * obj) char * dpbc(SV * obj) char * dprurb(SV * obj) char * dstaa(SV * obj) char * dstas(SV * obj) char * iadl1(SV * obj) char * iadl2(SV * obj) char * iadl3(SV * obj) char * ictyi(SV * obj) char * iprurb(SV * obj) SV * new(char * class, char * iadl1, char * iadl3, char * iadl2, char * ictyi) short respn(SV * obj) int retcc(SV * obj) void z4_close(SV * obj) char * zipc(SV * obj) <-----------------------End of Information Section----------------------------> Starting Build Prepocess Stage Finished Build Prepocess Stage Starting Build Parse Stage Finished Build Parse Stage Starting Build Glue 1 Stage Finished Build Glue 1 Stage Starting Build Glue 2 Stage Finished Build Glue 2 Stage Starting Build Glue 3 Stage Finished Build Glue 3 Stage Starting Build Compile Stage Starting "perl Makefile.PL" Stage Writing Makefile for ZIP4_PARM_59d8 Finished "perl Makefile.PL" Stage Starting "make" Stage /usr/bin/perl /usr/lib/perl5/5.8.3/ExtUtils/xsubpp -typemap /usr/lib/perl5/5.8.3/ExtUtils/typemap ZIP4_PARM_59d8.xs > ZIP4_PARM_59d8.xsc && mv ZIP4_PARM_59d8.xsc ZIP4_PARM_59d8.c gcc -c -I/opt/project/zip4 -I/opt/ams -m32 -O2 -fmessage-length=0 -Wall -Wall -pipe -DVERSION=\"0.00\" -DXS_VERSION=\"0.00\" -fPIC "-I/usr/lib/perl5/5.8.3/x86_64-linux-thread-multi/CORE" ZIP4_PARM_59d8.c Running Mkbootstrap for ZIP4_PARM_59d8 () chmod 644 ZIP4_PARM_59d8.bs rm -f blib/arch/auto/ZIP4_PARM_59d8/ZIP4_PARM_59d8.so LD_RUN_PATH="/opt/ams" gcc -m32 -shared ZIP4_PARM_59d8.o -o blib/arch/auto/ZIP4_PARM_59d8/ZIP4_PARM_59d8.so -L/opt/ams -lz4lnx chmod 755 blib/arch/auto/ZIP4_PARM_59d8/ZIP4_PARM_59d8.so cp ZIP4_PARM_59d8.bs blib/arch/auto/ZIP4_PARM_59d8/ZIP4_PARM_59d8.bs chmod 644 blib/arch/auto/ZIP4_PARM_59d8/ZIP4_PARM_59d8.bs Finished "make" Stage Starting "make install" Stage Installing /opt/project/zip4/_Inline/lib/auto/ZIP4_PARM_59d8/ZIP4_PARM_59d8.bs Installing /opt/project/zip4/_Inline/lib/auto/ZIP4_PARM_59d8/ZIP4_PARM_59d8.so Files found in blib/arch: installing files in blib/lib into architecture dependent library tree Writing /opt/project/zip4/_Inline/lib/auto/ZIP4_PARM_59d8/.packlist Finished "make install" Stage Starting Cleaning Up Stage Finished Cleaning Up Stage Finished Build Compile Stage Had problems bootstrapping Inline module 'ZIP4_PARM_59d8' Can't load '/opt/project/zip4/_Inline/lib/auto/ZIP4_PARM_59d8/ZIP4_PARM_59d8.so' for module ZIP4_PARM_59d8: /opt/project/zip4/_Inline/lib/auto/ZIP4_PARM_59d8/ZIP4_PARM_59d8.so: cannot open shared object file: No such file or directory at /usr/lib/perl5/5.8.3/x86_64-linux-thread-multi/DynaLoader.pm line 229. at /usr/lib/perl5/vendor_perl/5.8.3/Inline.pm line 500 at ZIP4_PARM.pm line 71 BEGIN failed--compilation aborted at ZIP4_PARM.pm line 246. Compilation failed in require at ./simpleZip4.pl line 16. BEGIN failed--compilation aborted at ./simpleZip4.pl line 16. --END-- The file exists and is a 32 bit ELF file. file /opt/project/zip4/_Inline/lib/auto/ZIP4_PARM_59d8/ZIP4_PARM_59d8.so /opt/project/zip4/_Inline/lib/auto/ZIP4_PARM_59d8/ZIP4_PARM_59d8.so: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), not stripped perl -V results: --BEGIN-- Summary of my perl5 (revision 5.0 version 8 subversion 3) configuration: Platform: osname=linux, osvers=2.6.4, archname=x86_64-linux-thread-multi uname='linux reger 2.6.4 #1 smp wed mar 31 11:30:50 utc 2004 x86_64 x86_64 x86_64 gnulinux ' config_args='-ds -e -Dprefix=/usr -Dvendorprefix=/usr -Dinstallusrbinperl -Dusethreads -Di_db -Di_dbm -Di_ndbm -Di_gdbm -Duseshrplib=true -Doptimize=-O2 -fmessage-length=0 -Wall -Wall -pipe' hint=recommended, useposix=true, d_sigaction=define usethreads=define use5005threads=undef useithreads=define usemultiplicity=define useperlio=define d_sfio=undef uselargefiles=define usesocks=undef use64bitint=define use64bitall=define uselongdouble=undef usemymalloc=n, bincompat5005=undef Compiler: cc='cc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -fno-strict-aliasing -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64', optimize='-O2 -fmessage-length=0 -Wall -Wall -pipe', cppflags='-D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -fno-strict-aliasing' ccversion='', gccversion='3.3.3 (SuSE Linux)', gccosandvers='' intsize=4, longsize=8, ptrsize=8, doublesize=8, byteorder=12345678 d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16 ivtype='long', ivsize=8, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8 alignbytes=8, prototype=define Linker and Libraries: ld='cc', ldflags =' -L/usr/local/lib64' libpth=/lib64 /usr/lib64 /usr/local/lib64 libs=-lm -ldl -lcrypt -lpthread perllibs=-lm -ldl -lcrypt -lpthread libc=/lib64//lib64/libc.so.6, so=so, useshrplib=true, libperl=libperl.so gnulibc_version='2.3.3' Dynamic Linking: dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-rdynamic -Wl,-rpath,/usr/lib/perl5/5.8.3/x86_64-linux-thread-multi/CORE' cccdlflags='-fPIC', lddlflags='-shared -L/usr/local/lib64' Characteristics of this binary (from libperl): Compile-time options: MULTIPLICITY USE_ITHREADS USE_64_BIT_INT USE_64_BIT_ALL USE_LARGE_FILES PERL_IMPLICIT_CONTEXT Built under linux Compiled at Apr 3 2004 00:47:45 %ENV: PERL_DL_NONLAZY="1" @INC: /usr/lib/perl5/5.8.3/x86_64-linux-thread-multi /usr/lib/perl5/5.8.3 /usr/lib/perl5/site_perl/5.8.3/x86_64-linux-thread-multi /usr/lib/perl5/site_perl/5.8.3 /usr/lib/perl5/site_perl /usr/lib/perl5/vendor_perl/5.8.3/x86_64-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.3 /usr/lib/perl5/vendor_perl --END-- Any one with ideas? Thanks. -- Brian Millett - [ Delenn (to Teronn), "A Distant Star"] "I am more 'one of us' at this moment, than I have ever been. More than you will ever know."