Domanda

Non credo che questa configurazione è supportata (forse gcc non è supportato a tutti) perché lo script ESQL utilizza solo le opzioni XLC.

Ma io voglio sapere se altre persone stanno usando questo gcc configurazione e Informix 64 bit in AIX.

È stato utile?

Soluzione

È possibile ottenere ESQL / C (una parte di ClientSDK o CSDK) da usare GCC, ma non è del tutto banale. In linea di principio, quello che faccio è:

  1. Fare una copia dello script ESQL originale.
  2. Modificare lo script originale di fornire le opzioni GCC su richiesta.

Se si desidera utilizzare solo GCC, allora questo è sufficiente. Se si desidera utilizzare sia GCC e talvolta XLC (il compilatore nativo), allora è più difficile.

Ho un singolo script chiamato ESQL nella mia directory bin privato (che è sempre sul mio cammino davanti a cose come $ INFORMIXDIR / bin). Funziona quale versione di ESQL / C Attualmente sto usando, ed esegue la versione appropriata di pre-patched che è memorizzato in una directory separata. E si crea automaticamente nuove versioni di questo script per me, quindi se io lavoro con CSDK 3.00.UC2 un minuto e poi CSDK 3.50.FC3 il prossimo, gestisce la commutazione automatica.

Ecco la patch applicata a ESQL / C 3,50 su Solaris - avrete bisogno di adattarlo alle 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

Fammi sapere se si desidera che lo script esql controllo che uso (vedi il mio profilo). Ho 9 script a 32 bit e 8 script a 64 bit, creato da un gruppo di 12 file di patch diversi (tutti per Solaris, temo). Le versioni variano da ESQL / C 5.20 (per OnLine 5,20) tramite ESQL / C 7.2x (morto da tempo ufficialmente) attraverso le varie versioni di CSDK.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top