On 24 Aug 2007 16:04:06 +0200, Piotr Poloczek <[EMAIL PROTECTED]> wrote: > Hello! > > I have problem with compiling DBD::Informix. > Could anybody help me ?
Note the part of the diagnostic output that says: ===QUOTE=== Using INFORMIXDIR=/u/informix and ESQL/C compiler esql Using INFORMIX-ESQL Version 7.24.UC7 from /u/informix Your version of ESQL/C is crippled and will not link with shared libraries even if you tell the script to use them (PTS Bug 102265). We are going to make a hacked copy of the script and use that. If the hacked ESQL/C script does not work, then you will probably have to make a static version of Perl with DBD::Informix and the ESQL/C. Read the Notes/static.build file for more information. Or (a much better idea) upgrade to Client SDK 2.40 or later! ===EOQ=== Really and truly, with IDS 7.31, you should be using a CSDK from the 21st century, rather than ESQL/C 7.24 which dates back a decade or so. The following message in the build information indicates a bug in esqlcc: Testing whether your Informix test environment will work... Argument "yes" isn't numeric in numeric gt (>) at esqlcc line 102. esqlcc: Num args = 27 I'll get that fixed - but it won't be doing much harm either. (A workaround is to set DBD_INFORMIX_DEBUG_ESQLCC=1 instead of 'yes'.) The real immediate problem is: esqlc: "dbdimp.ec", line 1328: Error -33200: Invalid statement on symbol 'ifx_int8_t'. esqlc: "dbdimp.ec", line 2202: Error -33200: Invalid statement on symbol 'ifx_int8_t'. 2 error(s) found make: *** [dbdimp.o] Error 1 That's another bug - the ESQL/C 7.2x compiler should not be seeing ifx_int8_t because that is only supported by CSDK versions of ESQL/C. OK - it will take time to get a fixed release of DBD::Informix out - I've been working on and off on it for several months, and I'm having some problems. So, you need a workaround. The simplest from my perspective would be if you upgrade to CSDK 2.90 or thereabouts (which would give you ESQL/C 2.90, which really is newer than ESQL/C 7.24 and 9.52 -- I didn't get a say in the version numbering!). Failing that: Line 1324 of dbdimp.ec says "#ifdef SQLINT8" change it to read "$ifdef POLLYWOGS_ARE_WONDERFUL;", and the matching "#else" to "$else;" and the matching "#endif" to "$endif;", noting carefully the new semi-colons that are mandatory. Line 2202 is in the middle of a #if 0 / #endif section - but it is the ESQL/C compiler that is complaining, not the C compiler. The best thing to do, then, is delete the whole block of code - lines 2192 to 2211. If you prefer to leave it there, then you'll have to embed it in comments, but there are already comments in that section, so it ain't trivial. Alternatively, wrap the #if 0 / #endif section in "$ifdef POLLYWOGS_ARE_STUPENDOUS;" and "$endif;" as above. With luck, those two changes will get you on to the next hurdle. -- Jonathan Leffler <[EMAIL PROTECTED]> #include <disclaimer.h> Guardian of DBD::Informix - v2007.0226 - http://dbi.perl.org "Blessed are we who can laugh at ourselves, for we shall never cease to be amused."