Craig Metzer wrote:
Hope you all are having a pleasant summer. I am ... just a little trouble installing ODBC for Perl 5.8.5. Perhaps someone can help me out. I get an error on make .. it appears to be in building ODBC.so: gcc -shared ODBC.o dbdimp.o -o blib/arch/auto/DBD/ODBC/ODBC.so -L/usr/lib -lodbc/usr/bin/ld: skipping incompatible /usr/lib/libodbc.so when searching for -lodbc/usr/lib/libodbc.a: could not read symbols: Bad valuecollect2: ld returned 1 exit statusmake: *** [blib/arch/auto/DBD/ODBC/ODBC.so] Error 1
TIA,
Craig
Washington DC
~~~~ output ~~~~~~~~~
[EMAIL PROTECTED] DBD-ODBC-1.13]$ perl Makefile.PLUseless use of private 
variable in void context at Makefile.PL line 431.
Configuring DBD::ODBC ...
    Remember to actually *READ* the README file!        And re-read it if you 
have any problems.
Multiple copies of Driver.xst found in: 
/usr/lib64/perl5/site_perl/5.8.5/x86_64-linux-thread-multi/auto/DBI/ 
/usr/lib64/perl5/vendor_perl/5.8.5/x86_64-linux-thread-multi/auto/DBI/ at 
Makefile.PL line 61Using DBI 1.58 (for perl 5.008005 on 
x86_64-linux-thread-multi) installed in 
/usr/lib64/perl5/site_perl/5.8.5/x86_64-linux-thread-multi/auto/DBI/Using ODBC 
in /usr
Umm, this looks like a unixodbc type of driver manager.We expect to find the 
sql.h, sqlext.h and (which weresupplied with unixODBC) in $ODBCHOME/include 
directory alongsidethe /usr/lib/libodbc.a /usr/lib/libodbc.so library. in 
$ODBCHOME/lib
Checking if your kit is complete...Looks goodInjecting selected odbc driver 
into cc commandInjecting selected odbc driver into cc commandMultiple copies of 
Driver.xst found in: 
/usr/lib64/perl5/site_perl/5.8.5/x86_64-linux-thread-multi/auto/DBI/ 
/usr/lib64/perl5/vendor_perl/5.8.5/x86_64-linux-thread-multi/auto/DBI/ at 
Makefile.PL line 462Using DBI 1.58 (for perl 5.008005 on 
x86_64-linux-thread-multi) installed in 
/usr/lib64/perl5/site_perl/5.8.5/x86_64-linux-thread-multi/auto/DBI/Writing 
Makefile for DBD::ODBC
The DBD::ODBC tests will use these values for the database connection:    
DBI_DSN=dbi:ODBC:pgsql              e.g. dbi:ODBC:demo    DBI_USER=postgres    
DBI_PASS=postgres
[EMAIL PROTECTED] DBD-ODBC-1.13]$ makecp Changes blib/lib/DBD/ODBC/Changes.pmcp ODBC.pm blib/lib/DBD/ODBC.pm/usr/bin/perl -p -e 
"s/~DRIVER~/ODBC/g" /usr/lib64/perl5/site_perl/5.8.5/x86_64-linux-thread-multi/auto/DBI/Driver.xst > 
ODBC.xsi/usr/bin/perl /usr/lib/perl5/5.8.5/ExtUtils/xsubpp  -typemap /usr/lib/perl5/5.8.5/ExtUtils/typemap  ODBC.xs > ODBC.xsc 
&& mv ODBC.xsc ODBC.cWarning: duplicate function definition 'data_sources' detected in ODBC.xs, line 202gcc -c -I/usr/include 
 -I. -I/usr/lib64/perl5/site_perl/5.8.5/x86_64-linux-thread-multi/auto/DBI -D_REENTRANT -D_GNU_SOURCE -DDEBUGGING 
-fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/include/gdbm -O2 -g -pipe -m64   
-DVERSION=\"1.13\" -DXS_VERSION=\"1.13\" -fPIC 
"-I/usr/lib64/perl5/5.8.5/x86_64-linux-thread-multi/CORE"  -I/usr/include ODBC.cgcc -c -I/usr/include  -I. 
-I/usr/lib64/perl5/site_perl/5.8.5/x86_64-linux-thread-multi/auto/DBI -D_REENTRANT -D_GNU_SOURCE -DDEBUGGI
NG -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 
-I/usr/include/gdbm -O2 -g -pipe -m64   -DVERSION=\"1.13\" -DXS_VERSION=\"1.13\" -fPIC 
"-I/usr/lib64/perl5/5.8.5/x86_64-linux-thread-multi/CORE"  -I/usr/include dbdimp.cdbdimp.c: In 
function `odbc_db_STORE_attrib':dbdimp.c:3108: warning: cast from pointer to integer of different 
sizedbdimp.c: In function `odbc_db_FETCH_attrib':dbdimp.c:3440: warning: cast to pointer from integer of 
different sizeRunning Mkbootstrap for DBD::ODBC ()chmod 644 ODBC.bsrm -f blib/arch/auto/DBD/ODBC/ODBC.sogcc  
-shared ODBC.o dbdimp.o  -o blib/arch/auto/DBD/ODBC/ODBC.so   -L/usr/lib -lodbc/usr/bin/ld: skipping 
incompatible /usr/lib/libodbc.so when searching for -lodbc/usr/lib/libodbc.a: could not read symbols: Bad 
valuecollect2: ld returned 1 exit statusmake: *** [blib/arch/auto/DBD/ODBC/ODBC.so] Error 1
[EMAIL PROTECTED] DBD-ODBC-1.13]$ ls -l $ODBCHOME/include/sql*.h-rw-r--r-- 1 root root 31945 Nov 21 2005 /usr/include/sql.h-rw-r--r-- 1 root root 1007 Feb 16 2006 /usr/include/sql3types.h-rw-r--r-- 1 root root 1258 Feb 16 2006 /usr/include/sqlca.h-rw-r--r-- 1 root root 78402 Nov 21 2005 /usr/include/sqlext.h-rw-r--r-- 1 root root 11165 Nov 21 2005 /usr/include/sqltypes.h-rw-r--r-- 1 root root 21671 Nov 21 2005 /usr/include/sqlucode.h [EMAIL PROTECTED] DBD-ODBC-1.13]$ exportdeclare -x DBI_DSN="dbi:ODBC:pgsql"declare -x DBI_PASS="postgres"declare -x DBI_USER="postgres"declare -x LANG="C"declare -x LD_LIBRARY_PATH="/usr:/usr/lib/pgsql:/lib:/lib64"declare -x ODBCHOME="/usr"declare -x PATH="/sbin:/usr/sbin:/usr/local/sbin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/usr/local/pgsql/bin:/opt/CSCOnfc/bin:/opt/CSCOnfc/tools:/usr/local/mrtg-2/bin:/home/mrtg/bin:./"declare -x POSTGRES_INCLUDE="/usr/include/pgsql"declare -x POSTGRES_LIB="/usr/lib64/pgsql"declare -x QTDIR="/usr/lib64/qt-3.3"declare -x SHELL="/bin/bash"declare -x TERM="xterm" [EMAIL PROTECTED] DBD-ODBC-1.13]$ perl -VSummary of my perl5 (revision 5 version 8 subversion 5) configuration: Platform: osname=linux, osvers=2.6.9-22.18.bz155725.elsmp, archname=x86_64-linux-thread-multi uname='linux hs20-bc1-3.build.redhat.com 2.6.9-22.18.bz155725.elsmp #1 smp thu nov 17 15:34:08 est 2005 x86_64 x86_64 x86_64 gnulinux ' config_args='-des -Doptimize=-O2 -g -pipe -m64 -Dversion=5.8.5 -Dmyhostname=localhost [EMAIL PROTECTED] -Dcc=gcc -Dcf_by=Red Hat, Inc. -Dinstallprefix=/usr -Dprefix=/usr -Dlibpth=/usr/local/lib64 /lib64 /usr/lib64 -Dprivlib=/usr/lib/perl5/5.8.5 -Dsitelib=/usr/lib/perl5/site_perl/5.8.5 -Dvendorlib=/usr/lib/perl5/vendor_perl/5.8.5 -Darchlib=/usr/lib64/perl5/5.8.5/x86_64-linux-thread-multi -Dsitearch=/usr/lib64/perl5/site_perl/5.8.5/x86_64-linux-thread-multi -Dvendorarch=/usr/lib64/perl5/vendor_perl/5.8.5/x86_64-linux-thread-multi -Darchname=x86_64-linux -Dvendorprefix=/usr -Dsiteprefix=/usr -Duseshrplib -Dusethreads -Dus
eithreads -Duselargefiles -Dd_dosuid -Dd_semctl_semun -Di_db -Ui_ndbm -Di_gdbm 
-Di_shadow -Di_syslog -Dman3ext=3pm -Duseperlio -Dinstallusrbinperl 
-Ubincompat5005 -Uversiononly -Dpager=/usr/bin/less -isr 
-Dinc_version_list=5.8.4 5.8.3 5.8.2 5.8.1 5.8.0'    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='gcc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -DDEBUGGING -fno-strict-aliasing 
-pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 
-I/usr/include/gdbm',    optimize='-O2 -g -pipe -m64',    
cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBUGGING -fno-strict-aliasing -pipe 
-I/usr/local/include -I/usr/include/gdbm'    ccversion='', gccversion='3.4.6 
20060404 (Red Hat 3.4.6-2)', gccosandvers=''    intsiz
e=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='gcc', ldflags 
=''    libpth=/usr/local/lib64 /lib64 /usr/lib64    libs=-lresolv -lnsl -lgdbm 
-ldb -ldl -lm -lcrypt -lutil -lpthread -lc    perllibs=-lresolv -lnsl -ldl -lm 
-lcrypt -lutil -lpthread -lc    libc=/lib/libc-2.3.3.so, so=so, 
useshrplib=true, libperl=libperl.so    gnulibc_version='2.3.4'  Dynamic 
Linking:    dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E 
-Wl,-rpath,/usr/lib64/perl5/5.8.5/x86_64-linux-thread-multi/CORE'    
cccdlflags='-fPIC', lddlflags='-shared'
Characteristics of this binary (from libperl):  Compile-time options: DEBUGGING 
MULTIPLICITY USE_ITHREADS USE_64_BIT_INT USE_64_BIT_ALL USE_LARGE_FILES 
PERL_IMPLICIT_CONTEXT  Built under linux  Compiled at Jul 24 2006 18:28:14  
@INC:    /usr/lib64/perl5/5.8.5/x86_64-linux-thread-multi    
/usr/lib/perl5/5.8.5    
/usr/lib64/perl5/site_perl/5.8.5/x86_64-linux-thread-multi    
/usr/lib64/perl5/site_perl/5.8.4/x86_64-linux-thread-multi    
/usr/lib64/perl5/site_perl/5.8.3/x86_64-linux-thread-multi    
/usr/lib64/perl5/site_perl/5.8.2/x86_64-linux-thread-multi    
/usr/lib64/perl5/site_perl/5.8.1/x86_64-linux-thread-multi    
/usr/lib64/perl5/site_perl/5.8.0/x86_64-linux-thread-multi    
/usr/lib/perl5/site_perl/5.8.5    /usr/lib/perl5/site_perl/5.8.4    
/usr/lib/perl5/site_perl/5.8.3    /usr/lib/perl5/site_perl/5.8.2    
/usr/lib/perl5/site_perl/5.8.1    /usr/lib/perl5/site_perl/5.8.0    
/usr/lib/perl5/site_perl    
/usr/lib64/perl5/vendor_perl/5.8.5/x86_64-linux-thread-multi    /usr/li
b64/perl5/vendor_perl/5.8.4/x86_64-linux-thread-multi    
/usr/lib64/perl5/vendor_perl/5.8.3/x86_64-linux-thread-multi    
/usr/lib64/perl5/vendor_perl/5.8.2/x86_64-linux-thread-multi    
/usr/lib64/perl5/vendor_perl/5.8.1/x86_64-linux-thread-multi    
/usr/lib64/perl5/vendor_perl/5.8.0/x86_64-linux-thread-multi    
/usr/lib/perl5/vendor_perl/5.8.5    /usr/lib/perl5/vendor_perl/5.8.4    
/usr/lib/perl5/vendor_perl/5.8.3    /usr/lib/perl5/vendor_perl/5.8.2    
/usr/lib/perl5/vendor_perl/5.8.1    /usr/lib/perl5/vendor_perl/5.8.0    
/usr/lib/perl5/vendor_perl    .

A quick search on google shows this is will happen on 64bit Linux when you attempt to use a .a (just search for "could not read symbols: Bad value collect2") and you'll find stuff like:

http://linuxfromscratch.org/pipermail/cross-lfs/2006-March/001659.html

I think your actual issue though is "/usr/bin/ld: skipping incompatible /usr/lib/libodbc.so when searching for -lodbc" which suggests your dynamically built libodbc.so shared object is not built the same as your perl i.e. one is 32bit and the other is 64bit. A quick "file libodbc.so" should tell you for sure. You need a shared object of libodbc.so built the same as your Perl.

Martin
--
Martin J. Evans
Easysoft Limited
http://www.easysoft.com

Reply via email to