использовать 64-битный Informix CSDK с GCC в AIX? - PullRequest
1 голос
/ 10 августа 2009

Я не думаю, что эта конфигурация поддерживается (возможно, gcc вообще не поддерживается), потому что сценарий esql использует только параметры xlc.

Но я хочу знать, используют ли другие люди эту конфигурацию gcc и informix 64 бита в AIX.

1 Ответ

0 голосов
/ 10 августа 2009

Вы можете заставить ESQL / C (часть ClientSDK или CSDK) использовать GCC, но это не совсем тривиально. В принципе то, что я делаю, это:

  1. Сделайте копию оригинального сценария esql.
  2. Измените исходный сценарий для предоставления параметров GCC по требованию.

Если вы хотите использовать только GCC, этого достаточно. Если вы хотите использовать как GCC, так и иногда XLC (собственный компилятор), тогда это сложнее.

У меня есть один скрипт с именем esql в моем каталоге приватных бинов (который всегда находится в моем PATH перед такими вещами, как $ INFORMIXDIR / bin). Он определяет, какую версию ESQL / C я сейчас использую, и запускает соответствующую предварительно исправленную версию, которая хранится в отдельном каталоге. И он автоматически создает новые версии этого сценария для меня, поэтому, если я работаю с CSDK 3.00.UC2 в одну минуту, а затем CSDK 3.50.FC3 в следующую, он автоматически выполняет переключение.

Вот патч, примененный к ESQL / C 3.50 в Solaris - вам нужно будет адаптировать его к 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.

...