|
Posted by Joe Doe on June 13, 2008, 12:05 pm
Please log in for more thread options Monty wrote:
>> Is the compiler that you're using to build DBD-Oracle the same
>> compiler that built perl ? (I've seen reports of problems on solaris
>> where perl has been built using sun's compiler, and gcc is being used
>> to build perl extensions. I don't know if that's relevant in your
>> case.)
It is relevant. IIRC, we built Perl from source because of this - the
Perl that comes with Solaris seems to be built with the solaris compiler
to get maximum performance.
>> It seems odd that a header file in a directory named /var/oracle/v9.2/
>> rdbms/demo/ is even being included. I guess there are good reasons for
>> the inclusion of that file ?
Who would know better, how the Oracle API shall look like than Oracle?
> Interesting difference in those two lines. From Oracle.h (included in
> the DBD module):
> sword OCIXMLTypeCreateFromSource (/*_ OCISvcCtx *svchp, OCIError
> *errhp,
> OCIDuration dur, ub1 src_type, dvoid src_ptr,
> sb4 ind, OCIXMLType **retInstance _*/)
>
> ...and from ociap.h:
> sword OCIXMLTypeCreateFromSource (OCISvcCtx *svchp, OCIError *errhp,
> OCIDuration dur, ub1 src_type, dvoid src_ptr,
> sb4 ind, OCIXMLType **retInstance)
>
> It looks like Oracle.h has the parameters commented out, if I'm not
> mistaken. I might try removing those comment characters and run the
> thing again.
Yes, this is a comment - the only explanation I have for this is,
that it would be compatible with a K&R-C-compiler, cause this very
old version of C doesn't support argument types for function declarations.
Therefore you may have a look at the compiler flags that are used,
and check whether there is another version of the prototype in the
header that gets used if some defines (flag -Dsomething) are set.
You may also run into trouble, if your version of Oracle is 64-bit,
while gcc produces/uses 32-bit libraries: check LD_LIBRARY_PATH then,
so you use the correct 32-bit oracle ABI with gcc.
|