1

esql スクリプトは xlc オプションのみを使用するため、この構成はサポートされていないと思います (gcc はまったくサポートされていない可能性があります)。

しかし、他の人が AIX でこの構成 gcc と informix 64 ビットを使用しているかどうかを知りたいです。

4

1 に答える 1

0

ESQL/C (ClientSDK または CSDK の一部) で GCC を使用することはできますが、完全に簡単ではありません。原則として、私が行うことは次のとおりです。

  1. 元の esql スクリプトのコピーを作成します。
  2. 元のスクリプトを変更して、必要に応じて GCC オプションを提供します。

GCC のみを使用する場合は、これで十分です。GCC と、場合によっては XLC (ネイティブ コンパイラ) の両方を使用したい場合、それは難しくなります。

私はプライベート bin ディレクトリに esql というスクリプトを 1 つ持っています (これは常に $INFORMIXDIR/bin などの PATH の前にあります)。現在使用している ESQL/C のバージョンを特定し、別のディレクトリに保存されている適切なパッチ適用済みバージョンを実行します。また、そのスクリプトの新しいバージョンが自動的に作成されるため、CSDK 3.00.UC2 を 1 分間使用し、次に CSDK 3.50.FC3 を使用すると、スイッチオーバーが自動的に処理されます。

これは、Solaris 上の ESQL/C 3.50 に適用されたパッチです。これを 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

私が使用している制御スクリプトが必要かどうかを教えてesqlください (私のプロフィールを参照してください)。私は 9 つの 32 ビット スクリプトと 8 つの 64 ビット スクリプトを持っており、これらは 12 の異なるパッチ ファイルのセットによって作成されています (すべて Solaris 用です)。バージョンは、ESQL/C 5.20 (OnLine 5.20 用) から ESQL/C 7.2x (公式には長い間使用されていません) まで、さまざまなバージョンの CSDK に及びます。

于 2009-08-10T13:56:49.403 に答える