Question

Je ne pense pas que cette configuration est prise en charge (peut-être gcc est pas pris en charge du tout) parce que le script esql utilise les options de xlc seulement.

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

Était-ce utile?

La solution

Vous pouvez obtenir ESQL / C (une partie de ClientSDK ou CSDK) à utiliser GCC, mais il est pas tout à fait banal. En principe, ce que je fais est:

  1. Faites une copie du script esql d'origine.
  2. Modifier le script original pour fournir les options de GCC sur demande.

Si vous voulez seulement utiliser GCC, cela suffit. Si vous voulez utiliser à la fois GCC et parfois XLC (le compilateur natif), il est plus difficile.

J'ai un seul script appelé esql dans mon répertoire bin privé (ce qui est toujours sur mon chemin avant des choses comme $ INFORMIXDIR / bin). Il fonctionne sur la version de ESQL / C Je suis actuellement à l'aide, et exécute la version pré-patché appropriée qui est stocké dans un répertoire distinct. Et il crée automatiquement de nouvelles versions de ce script pour moi si je travaille avec CSDK 3.00.UC2 une minute, puis CSDK 3.50.FC3 la prochaine, il gère automatiquement le passage.

Voici le patch appliqué à ESQL / C sur 3,50 Solaris - vous aurez besoin de 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 script esql contrôle que j'utilise (voir mon profil). J'ai 9 scripts 32 bits et 8 scripts 64 bits, créé par un ensemble de 12 différents fichiers de patch (tous pour Solaris, j'ai peur). Les versions vont de ESQL / C 5,20 (pour OnLine 5,20) par l'intermédiaire ESQL / C 7.2x (longue officiellement mort) à travers différentes versions de CSDK.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top