2009-08-10 5 views
1

Je ne pense pas que cette configuration est supportée (peut-être que gcc n'est pas supporté du tout) parce que le script esql utilise uniquement les options xlc.utilisant 64 bits Informix CSDK avec gcc dans AIX?

Mais je veux savoir si d'autres personnes utilisent cette configuration gcc et informix 64 bits sous AIX.

Répondre

0

Vous pouvez obtenir ESQL/C (une partie de ClientSDK ou CSDK) pour utiliser GCC, mais ce n'est pas complètement trivial. En principe, ce que je fais est:

  1. Faites une copie du script esql d'origine.
  2. Modifiez le script d'origine pour fournir les options GCC à la demande.

Si vous souhaitez uniquement utiliser GCC, cela suffit. Si vous voulez utiliser à la fois GCC et parfois XLC (le compilateur natif), alors c'est plus difficile.

J'ai un seul script appelé esql dans mon répertoire bin privé (qui est toujours sur mon chemin avant des choses comme $ INFORMIXDIR/bin). Il calcule la version d'ESQL/C que j'utilise actuellement et exécute la version pré-corrigée appropriée qui est stockée dans un répertoire séparé. Et il crée automatiquement de nouvelles versions de ce script pour moi, donc si je travaille avec CSDK 3.00.UC2 une minute et ensuite CSDK 3.50.FC3 le suivant, il gère automatiquement le basculement.

Voici le patch appliqué à ESQL/C 3.50 sous Solaris - vous devrez l'adapter à AIX.

# @(#)$Id: patch.300.64,v 1.2 2007/09/02 21:46:55 jleffler Exp $ 
# GCC Patch for esql from CSDK 3.00.FC1 

--- esql  2007-09-02 14:44:18.739067000 -0700 
+++ esql.new 2007-09-02 14:44:26.812149000 -0700 
@@ -23,10 +23,33 @@ 
INFDIR=${INFORMIXDIR=/usr/informix} 
DB2CLIDIR=${INSTHOME=/usr/db2} 
PREPCC=${INFDIR}/lib/esql/esqlc 
-CC="${INFORMIXC=cc} -xarch=v9" 
-CC_TH="${INFORMIXC=cc} -xarch=v9" 
-CPP="${INFORMIXCPP=CC} -xarch=v9" 
-CPP_TH="${INFORMIXCPP=CC} -xarch=v9" 
+ 
+: ${INFORMIXC:=cc} 
+: ${INFORMIXCPP:=CC} 
+case "$INFORMIXC" in 
+*perl*esqlcc*) # Building DBD::Informix 
+ case "$ESQLCC" in 
+ *gcc*|*g++) 
+  CC_ARCHFLAGS="-m64" 
+  ;; 
+ *cc*|*CC*) 
+  CC_ARCHFLAGS="-xarch=v9" 
+  ;; 
+ esac 
+ ;; 
+*gcc*|*g++*) 
+ CC_ARCHFLAGS="-m64" 
+ ;; 
+# Beware - this normally needs to be last - because things like esqlcc and gcc match too! 
+*cc*|*CC*) 
+ CC_ARCHFLAGS="-xarch=v9" 
+ ;; 
+esac 
+ 
+CC="$INFORMIXC $CC_ARCHFLAGS" 
+CC_TH="$INFORMIXC $CC_ARCHFLAGS" 
+CPP="$INFORMIXCPP $CC_ARCHFLAGS" 
+CPP_TH="$INFORMIXCPP $CC_ARCHFLAGS" 
STATICFLAGS="" 

CP=${INFORMIXCP="$CC -E -C"}     # cpp which runs before esqlc 
@@ -51,9 +74,6 @@ 
then 
CC="$CC $CC_AMD32" 
CPP="$CPP $CC_AMD32" 
-else 
-CC=$CC 
-CPP=$CPP 
fi 

: ' 
@@ -922,7 +942,7 @@ 
       # Set the linker to CPP 
       # Set the source files to objects 
       # 
-    CC=$CPP 
+    CC="$CPP" 
       A="$AO $CPPOPTS" 
     fi 
fi 

laissez-moi savoir si vous voulez que le contrôle de script esql que j'utilise (voir mon profil). J'ai 9 scripts de 32 bits et 8 scripts de 64 bits, créés par un ensemble de 12 fichiers de patchs différents (tous pour Solaris, j'en ai peur). Les versions vont d'ESQL/C 5.20 (pour OnLine 5.20) via ESQL/C 7.2x (mort depuis longtemps officiellement) à travers différentes versions de CSDK.

Questions connexes