在AIX中使用64位Informix CSDK与gcc?

时间:2009-08-10 03:16:26

标签: informix

我认为不支持此配置(可能根本不支持gcc),因为esql脚本仅使用xlc选项。

但我想知道其他人是否在AIX中使用此配置gcc和informix 64位。

1 个答案:

答案 0 :(得分:0)

您可以使用ESQL / C(ClientSDK或CSDK的一部分)来使用GCC,但这并非完全无关紧要。原则上,我所做的是:

  1. 制作原始esql脚本的副本。
  2. 修改原始脚本以按需提供GCC选项。
  3. 如果您只想使用GCC,那么这就足够了。如果你想同时使用GCC和XLC(原生编译器),那就更难了。

    我的私有bin目录中有一个名为esql的脚本(在$ INFORMIXDIR / bin之前总是在我的PATH上)。它确定了我正在使用的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
    

    Lemme知道您是否需要我使用的控制esql脚本(请参阅我的个人资料)。我有9个32位脚本和8个64位脚本,由一组12个不同的补丁文件创建(全部用于Solaris,我担心)。版本范围从ESQL / C 5.20(适用于OnLine 5.20)到ESQL / C 7.2x(官方已久)通过各种版本的CSDK。