Hi,
I run into a strange problem today compiling DBD::Oracle on the newly
installed Oracle 10.1.0.3
the erorr I got was:
gcc -c -I/usr/oracle/rdbms/demo -I/usr/oracle/rdbms/public
-I/usr/oracle/plsql/public
-I/usr/oracle/network/public -I/usr/oracle/rdbms/demo
-I/usr/oracle/plsql/public
-I/usr/oracle/rdbms/public -I/usr/oracle/rdbms/demo
-I/usr/lib/perl5/site_perl/5.8.3/i386-linux-thread-multi/auto/DBI/ -D_REENTRANT
-D_GNU_SOURCE -DTHREADS_HAVE_PIDS -DDEBUGGING -fno-strict-aliasing
-I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
-I/usr/include/gdbm -O2 -g -pipe
-march=i386 -mcpu=i686 -DVERSION=\"1.16\" -DXS_VERSION=\"1.16\" -fPIC
"-I/usr/lib/perl5/5.8.3/i386-linux-thread-multi/CORE" -Wall -Wno-comment
-DUTF8_SUPPORT -DNEW_OCI_INIT -DORA_OCI_VERSION=\"10.1.0.3\" dbdimp.c
dbdimp.c: In function `ora_db_login6':
dbdimp.c:282: warning: unused variable `o'
dbdimp.c:283: warning: unused variable `l'
dbdimp.c:392: warning: implicit declaration of function
`OCINlsEnvironmentVariableGet'
dbdimp.c:392: error: `OCI_NLS_CHARSET_ID' undeclared (first use in this
function)
dbdimp.c:392: error: (Each undeclared identifier is reported only once
dbdimp.c:392: error: for each function it appears in.)
dbdimp.c:399: error: `OCI_NLS_NCHARSET_ID' undeclared (first use in this
function)
dbdimp.c:426: warning: implicit declaration of function `OCIEnvNlsCreate'
dbdimp.c:435: warning: implicit declaration of function `OCINlsCharSetNameToId'
make: *** [dbdimp.o] Error 1
in the end it turns out there are TWO oci.h files one in rdbms/demo and
one in rdbs/public
release timestamp from the header of the file:
rdbms/public: oci.h 06-apr-2004.17:10:59
rdbms/demo: oci.h 23-jan-2002.01:46:43
description from the header of the file is identicall to both of them:
NAME
oci.h - V8 Oracle Call Interface public definitions
DESCRIPTION
This file defines all the constants and structures required by a V8
OCI programmer.
so, I am not sure if I got an alien file somehow from some old oracle
version, as everything else worked perfectly.
anyway here is the quick fix, if anyone else get into the same problem:
1. run perl Makefile.PL
2. run make
<---- you get the error
3. edit Makefile
4. locate the INC= line at the start of the file
5. make sure the search path contains first a "..../rdbms/public" and
only THEN ".../rdbms/demo" (switch places)
6. run make again
7. run make test and make install if all is OK
--
Best regards,
Doru Petrescu
Senior Software Engineer
Astral Telecom Bucuresti