我认为不支持此配置(可能根本不支持 gcc),因为 esql 脚本仅使用 xlc 选项。
但我想知道其他人是否在 AIX 中使用此配置 gcc 和 informix 64 位。
我认为不支持此配置(可能根本不支持 gcc),因为 esql 脚本仅使用 xlc 选项。
但我想知道其他人是否在 AIX 中使用此配置 gcc 和 informix 64 位。
您可以让 ESQL/C(ClientSDK 或 CSDK 的一部分)使用 GCC,但这并非完全不重要。原则上,我所做的是:
如果你只想使用 GCC,那么这就足够了。如果您想同时使用 GCC,有时还想使用 XLC(本机编译器),那就更难了。
我的私有 bin 目录中有一个名为 esql 的脚本(它始终位于我的 PATH 中,位于 $INFORMIXDIR/bin 之类的东西之前)。它计算出我当前使用的 ESQL/C 版本,并运行存储在单独目录中的适当的预修补版本。它会自动为我创建该脚本的新版本,因此如果我一分钟使用 CSDK 3.00.UC2,然后使用 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。