문제

ESQL 스크립트가 XLC 옵션 만 사용하기 때문에이 구성이 지원되지 않는다고 생각합니다 (GCC는 전혀 지원되지 않을 수 있습니다).

그러나 다른 사람들 이이 구성 GCC를 사용하고 AIX에서 64 비트를 사용하고 있는지 알고 싶습니다.

도움이 되었습니까?

해결책

GCC를 사용하려면 ESQL/C (ClientsDK 또는 CSDK의 일부)를 얻을 수 있지만 완전히 사소한 것은 아닙니다. 원칙적으로, 내가하는 일은 다음과 같습니다.

  1. 원래 ESQL 스크립트의 사본을 만드십시오.
  2. 원래 스크립트를 수정하여 GCC 옵션을 요청합니다.

GCC 만 사용하려면 충분합니다. GCC와 때로는 XLC (기본 컴파일러)를 모두 사용하려면 더 어렵습니다.

개인 빈 디렉토리에 ESQL이라는 단일 스크립트가 있습니다 ($ InformixDir/Bin과 같은 것보다 항상 내 경로에 있습니다). 현재 사용중인 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

Lemme는 당신이 통제를 원하는지 알고 있습니다 esql 내가 사용하는 스크립트 (내 프로필 참조). 12 개의 다른 패치 파일 세트 (Solaris의 경우, 두려워)로 만든 9 개의 32 비트 스크립트와 8 개의 64 비트 스크립트가 있습니다. 버전은 ESQL/C 5.20 (온라인 5.20)에서 ESQL/C 7.2X (공식적으로 Long Dead)를 통해 다양한 버전의 CSDK를 통해 다양합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top