Hi,
I'm trying to build DBD::Oracle 1.12 on the latest cygwin, and perl 5.8
- without much success. I have Oracle 9.2 installed on the XP side of
my machine, and have verified it is functional. I can run sql*plus from
cygwin (if that proves anything). Every other Perl module (including
DBI) has installed and worked flawlessly. As you will see from the
output below, my $ORACLE_HOME is set to /cygdrive/f/oracle/ora92 (which
translates to f:\oracle\ora92 in the XP world).
I followed the instructions in README.wingcc to build liboci.a.
Here is the output from Makefile.PL ...
[DBD-Oracle-1.12]$ perl Makefile.PL
Using DBI 1.30 installed in
/usr/lib/perl5/site_perl/5.8.0/cygwin-multi-64int/auto/DBI
!!! Duplicate specification "S=s" for option "s"
Configuring DBD::Oracle ...
>>> Remember to actually *READ* the README file!
Especially if you have any problems.
Using Oracle in /cygdrive/f/oracle/ora92
Found header files in rdbms/demo.
Found oci directory
Using OCI directory 'oci'
Using liboci.a (did you build it?)
System: perl5.008 cygwin_nt-5.0 kmbestst 1.3.12(0.5432) 2002-07-06 02:16
i686 unknown
Compiler: gcc -O2 -DPERL_USE_SAFE_PUTENV -fno-strict-aliasing
Linker: /usr/bin/ld
Sysliblist:
Warning: If you have problems you may need to rebuild perl with
-Uusemymalloc.
Checking if your kit is complete...
Looks good
!!! Note (probably harmless): No library found for -loci
!!! Use of uninitialized value in concatenation (.) or string at
Makefile.PL line 1129.
LD_RUN_PATH=/cygdrive/f/oracle/ora92/lib:/cygdrive/f/oracle/ora92/rdbms/
lib
Using DBD::Oracle 1.12.
Using DBD::Oracle 1.12.
Using DBI 1.30 installed in
/usr/lib/perl5/site_perl/5.8.0/cygwin-multi-64int/auto/DBI
Writing Makefile for DBD::Oracle
*** If you have problems...
read all the log printed above, and the README and README.help
files.
(Of course, you have read README by now anyway, haven't you?)
There appear to be a couple of errors (lines preceeded by !!!), but I'm
not sure if they are of any consequence. When I try 'make', I get the
following ...
...snip..
(many lines similar to this)oci8.c:841: warning: passing arg 1 of
`fprintf' from incompatible pointer type
...snip..
LD_RUN_PATH="/cygdrive/f/oracle/ora92/lib:/cygdrive/f/oracle/ora92/rdbms
/lib" ld2 -s -L/usr/local/lib Oracle.o dbdimp.o oci7.o oci8.o -o
blib/arch/auto/DBD/Oracle/Oracle.dll
/usr/lib/perl5/5.8.0/cygwin-multi-64int/CORE/libperl.dll.a
gcc -shared -o Oracle.dll -Wl,--out-implib=libOracle.dll.a
-Wl,--export-all-symbols -Wl,--enable-auto-import -Wl,--stack,8388608 \
-s -L/usr/local/lib Oracle.o dbdimp.o oci7.o oci8.o
/usr/lib/perl5/5.8.0/cygwin-multi-64int/CORE/libperl.dll.a
Creating library file: libOracle.dll.a
dbdimp.o(.text+0xc08):dbdimp.c: undefined reference to `_OCIInitialize'
dbdimp.o(.text+0xc72):dbdimp.c: undefined reference to `_OCIEnvInit'
dbdimp.o(.text+0xcc0):dbdimp.c: undefined reference to `_OCIHandleAlloc'
dbdimp.o(.text+0xd0b):dbdimp.c: undefined reference to `_OCIHandleAlloc'
dbdimp.o(.text+0xd56):dbdimp.c: undefined reference to `_OCIHandleAlloc'
:
:
dbdimp.o(.text+0x6459):dbdimp.c: undefined reference to
`_OCIDescriptorFree'
dbdimp.o(.text+0x64f1):dbdimp.c: undefined reference to
`_OCIDescriptorFree'
dbdimp.o(.text+0x65cc):dbdimp.c: undefined reference to `_OCIHandleFree'
oci8.o(.text+0x98e):oci8.c: undefined reference to `_OCIErrorGet'
oci8.o(.text+0x12e6):oci8.c: undefined reference to `_OCIHandleAlloc'
oci8.o(.text+0x134a):oci8.c: undefined reference to `_OCIStmtPrepare'
oci8.o(.text+0x13a2):oci8.c: undefined reference to `_OCIHandleFree'
oci8.o(.text+0x146f):oci8.c: undefined reference to `_OCIAttrGet'
:
oci8.o(.text+0x802f):oci8.c: undefined reference to `_OCILobWrite'
oci8.o(.text+0x81e3):oci8.c: undefined reference to `_OCILobTrim'
oci8.o(.text+0x8451):oci8.c: undefined reference to `_OCIHandleFree'
collect2: ld returned 1 exit status
perlld: *** system() failed to execute
gcc -shared -o Oracle.dll -Wl,--out-implib=libOracle.dll.a
-Wl,--export-all-symbols -Wl,--enable-auto-import -Wl,--stack,8388608 \
-s -L/usr/local/lib Oracle.o dbdimp.o oci7.o oci8.o
/usr/lib/perl5/5.8.0/cygwin-multi-64int/CORE/libperl.dll.a
Is this do-able, or am I bashing my head against a brick wall ? Any
hints much appreciated.
Thanks,
Steve