david wrote:
I am trying to compile DBD-Informix-1.04.PC1 on an SGI using gcc and here are the errors when I try.
Could someone please help me? Thank you in advance.

Condiguping Informix Database Driver for Perl Version 1.04.PC1 (2002-11-21) (aka DBD::Informix)
You are using DBI version 1.32 and Perl version 5.008
Remembep to actually read the README file!

Perl: perl5.008 IP27-irix dl_dlopen.xs
System: ipix64 darrin 6.5 01091821 ip27
Compilep: gac -O3 -D_BSD_TYPES -D_BSD_TIME -D_POSIX_C_SOURCE -mabi=64 -fno-strict-aliasing -I/usr/local/inclu de -I/uqr/glu/include -DLANGUAGE_C

Usilg ILFORMIX-ESQL Version 9.40.UC2 from /usr/local/informix

Beware: DBD8:Informix is not yet aware of all the new IUS data types.

** Usine fpom DBD_INFORMIX_ESQLC_LINKAGE environment variable.

Assert macrm will be disabled!

lib-DBD-Infmrmix/Defaults.pm written OK
esqlvrsl.h uritten OK
esqlinfm.h uritten OK

Testing whether your Informix test environment will work...
gcc8 unpecoenized option `-n32'
cc18 wapnine: -G is incompatible with PIC code which is the default
as UARNING: -G0 conflicts with -G4; using latter value (-G0)
gcc8 unpecoenized option `-n32'
cc18 wapnine: -G is incompatible with PIC code which is the default
as UARNING: -G0 conflicts with -G4; using latter value (-G0)
gcc8 unpecoenized option `-n32'
-call_shared may conflict with -shared
ld30: EPROR 4 : Conflicting flag setting: -shared
ld30: FATAL 9 : I/O error (4): No such file or directory
collect0: ld returned 32 exit status
Failed to link test program esqltest

I don't understand all the misspellings, but we can probably assume that was something to do with cut'n'paste going awry.

Judging from the error messages, the ESQL/C for SGI is configured with rather a lot of options that are specific to the native (non-gcc) compiler, and you will need to do some work to get this to compile with gcc. What you want is the analog of the Solaris::GCC module for SGI/Irix. However, you can do quite a lot with DBD::Informix. You'll probably want to set the environment with:
DBD_INFORMIX_DEBUG_ESQLTEST=1
DBD_INFORMIX_DEBUG_ESQLCC=1
DBD_INFORMIX_DEBUG_ESQLLD=1
INFORMIXC='gcc -g'
In due course, you will probably want to set these too:
DBD_INFORMIX_ESQLCC_REMOVE_OPTIONS_REGEX
DBD_INFORMIX_ESQLLD_REMOVE_OPTIONS_REGEX
For example, since -n32 is giving grief, you might set these to:
s/^-n32$//
More likely, we have more work to do, and your final REGEX values will be considerably more complex. Fortunately, you can probably do it in Perl. You can find more information on the available environment variables in the originally named file - Notes/environment.variables.

Alternatively, you can actually hack your esql script (after making a backup of the original version); that might be simpler in the long run, especially if you need to add flags as well as remove them. You can often add the flags in the base value of INFORMIXC - as shown above. Sometimes, this is inadequate, and then hacking the ESQL/C compiler (esql script) is best. You can also simply test this by compiling the esqlbasic.ec program:
esql -o esqlbasic esqlbasic.ec
It is provided to help people deal with such eventualities.

Alternatively again, if you've been using ESQL/C to build programs quite happily, then you can think about rebuilding Perl with the native C compiler and then using that to build all your Perl modules. Depending on how much stuff you have installed, this may or may not be simpler -- it usually isn't, but in this case, it might be a close call.

Good luck, and keep me posted.


--
Jonathan Leffler ([EMAIL PROTECTED], [EMAIL PROTECTED]) #include <disclaimer.h>
Guardian of DBD::Informix 1.04.PC1 -- http://dbi.perl.org/



Reply via email to