shell> ldd /home/oracle/OraHome1/lib/libclntsh.so.9.0结果贴出来

解决方案 »

  1.   

    我是这方面的菜鸟,不知道怎么把模式切换到shell>,现在是#模式
    想再问下,服务器上已经装好oracle,编译php5支持oci8,是否需要再装oracle client
      

  2.   

            libwtc9.so => /home/oracle/OraHome1/lib/libwtc9.so (0x002eb000)
            libdl.so.2 => /lib/libdl.so.2 (0x002f5000)
            libm.so.6 => /lib/tls/libm.so.6 (0x00111000)
            libpthread.so.0 => /lib/tls/libpthread.so.0 (0x00381000)
            libc.so.6 => /lib/tls/libc.so.6 (0x00134000)
            /lib/ld-linux.so.2 (0x00445000)这是运行 ldd /home/oracle/OraHome1/lib/libclntsh.so.9.0 的结果
      

  3.   

    再问下,服务器上已经装好oracle,编译php5支持oci8,是否需要再装oracle client
      

  4.   

    Linux web.fj66.com 2.6.9-67.ELsmp #1 SMP Wed Nov 7 13:58:04 EST 2007 i686 i686 i386 GNU/Linux
      

  5.   

    cd $ORACLE_HOME/bin/看看是否有genclntsh,编辑它LD_SELF_CONTAINED="-z defs"改为LD_SELF_CONTAINED=""
    SYSLIBS=`cat ${ORACLE_HOME}/lib/sysliblist`" -laio -lm -lc"改为SYSLIBS=`cat ${ORACLE_HOME}/lib/sysliblist`" -ldl -lm -lc 
    -L/usr/lib/gcc-lib/i386-redhat-linux/3.2.2 -lgcc"
      

  6.   

    执行./genclntsh提示:
    genclntsh: Could not locate  /rdbms/admin/shrept.lst /precomp/admin/shrept.lst /plsql/admin/shrept.lst /ldap/admin/shrept.lst /network/admin/shrept.lst
    genclntsh: exiting ...
      

  7.   

    好吧,考验你的时间到了。。去阅读,理解并修改genclntsh,直到它不报错为止
      

  8.   

    实际上我也没装过oracle,这里的大致错误就是你的libc和你的oracle版本不兼容。当前版本的libc缺少了某些函数。
      

  9.   

    好吧,把你的genclntsh给我,我帮你看看
      

  10.   

    #!/bin/sh
    #
    # $Id: genclntsh.sh 05-mar-01.12:11:45 mkrohan Exp $
    # Copyright (c) 1996, 2000, 2001 by Oracle Corporation. All Rights Reserved. \
    #
    # genclntsh.sh  (for Linux)
    #
    # Script to create single shared client library for OCI, Pro*C, and XA
    #
    #  MODIFIED   (MM/DD/YY)
    #  mkrohan     03/05/01 - Remove echo
    #  mkrohan     03/05/01 - Drop libnent9
    #  rlal        02/13/01 - Merges for 8i to 9i for Linux.
    #  mkrohan     12/13/00 - Fix symlinking
    #  mkrohan     12/07/00 - Final cleanup
    #  mkrohan     11/27/00 - Add support static library map file
    #  mkrohan     11/08/00 - Search for product 9 libraries
    #  mkrohan     10/26/00 - Update to version 9
    #  rachacos    11/25/98 - use naming adapter libraries
    #  rachacos    07/30/98 - use GS LDAP package
    #  hpiao       11/12/97 - Make libcommon$$.a writable
    #  jweisz      06/30/97 - ADE support: if lib is symlink, copy it
    #  mluong      05/30/97 - Read entry points from $PRODUCT/admin/shrept.lst
    #  hpiao       04/04/97 - Modify for 803
    #  dkozlows    05/01/95 - File created
    ##
    # List the required symbols from a product's shrept.lst file
    listf () {
            product=$1
            entryList=$ORACLE_HOME/$product/admin/shrept.lst
            grep -v '#' $entryList | \
                    grep $product | \
                    awk '{ printf (" -u %s", $3); }'
    }#
    # Main line starts here
    ##
    # Explicit path to ensure that we're using the correct commands
    PATH=/bin:/usr/bin:/usr/local/bin:$PATH
    export PATH#
    # each product _must_ provide a $PRODUCT/admin/shrept.lst
    ErrFiles=
    for product in rdbms precomp plsql ldap network
    do
            SHREPT=$ORACLE_HOME/$product/admin/shrept.lst
            if [ ! -f $SHREPT ]
            then
                    ErrFiles="$ErrFiles $SHREPT"
            fi
    done
    if [ ! -z "$ErrFiles" ]
    then
            echo "genclntsh: Could not locate $ErrFiles" 1>&2
            echo "genclntsh: exiting ..." 1>&2
            exit 1
    fi#
    # library definitions
    OLIB=${ORACLE_HOME}/lib# Precomp
    LSQL="-lsql9"# PL/SQL
    LPLSQL="-lpls9"# RDBMS
    LMM="-lmm"
    LCLIENT="-lclient9"
    LCOMMON="-lcommon9"
    LGENERIC="-lgeneric9"# NLSRTL & CORE
    LNLSRTL="-lnls9"
    LUNLSRTL="-lunls9"
    LCORE="-lcore9"# OTrace
    LTRACE="-ltrace9"# LDAP
    LLDAP="-lldapclnt9"# ICache
    LWTC="-lwtc9"
    # Network
    LDFLAGS="`cat ${ORACLE_HOME}/lib/ldflags`"
    LNENT=
    [ -r ${OLIB}/libnent9.a ] && LNENT="-lnent9"
    LNETWORK="${LDFLAGS} ${LNENT} -lnsslb9 -lncrypt9 -ln9 -lnl9 -lnro9 ${LDFLAGS}"#
    # Create lists of symbols to pass to ld
    SYMS_OCIC="`listf rdbms` ${LCLIENT}"
    SYMS_SQL="`listf precomp` ${LSQL}"
    SYMS_PLSQL="`listf plsql` ${LPLSQL}"
    SYMS_LDAP="`listf ldap` ${LLDAP}"
    SYMS_NETWORK="`listf network` ${LNETWORK}"#
    # Library names and locations
    CLNT_NAM=clntsh                                 # (short) library name
    CLNT_VER=9.0                                    # library version number
    CLNT_LNK=lib${CLNT_NAM}.so                      # name of symlink to library
    CLNT_LIB=${CLNT_LNK}.${CLNT_VER}                # actual library file name
    LIB_DIR=${ORACLE_HOME}/lib                      # lib. destination directoryif [ ! -z "$SRCHOME" ]
    then
            LIB_DIR=${SRCHOME}/rdbms/lib            # lib. destination directory
    fi#
    # If in ADE, the library may be a symlink to the label server.  If so,
    # pull it over...
    if [ -h ${LIB_DIR}/${CLNT_LIB} ]
    then
            echo "copying ${CLNT_LIB} to local disk"        
    cp -p ${LIB_DIR}/${CLNT_LIB} ${LIB_DIR}/${CLNT_LIB}.tmp
            rm -f ${LIB_DIR}/${CLNT_LIB}
            mv ${LIB_DIR}/${CLNT_LIB}.tmp ${LIB_DIR}/${CLNT_LIB}
            chmod +w ${LIB_DIR}/${CLNT_LIB}
    fi#
    # Define the name of the map file
    MAPFILE=${LIB_DIR}/${CLNT_NAM}.map
    #
    # Linker command and options#LD="ld -i -G -z text -L${ORACLE_HOME}/lib"     # shared library link command
    LD="ld -shared  -L${ORACLE_HOME}/lib"           # shared library link command
    LD_RUNTIME="-R${ORACLE_HOME}/lib"
    LD_OPT="-Map ${MAPFILE} -h ${CLNT_LIB}"                         # name inserted into library
    LD_OUT="-o ${LIB_DIR}/${CLNT_LIB}"              # output specification
    #LD_SELF_CONTAINED="-z defs"
    LD_SELF_CONTAINED=""
    #
    # Oracle library dependencies
    DEF_ON="${ORACLE_HOME}/rdbms/lib/kpudfo.o"
    NAUTAB="${ORACLE_HOME}/lib/nautab.o"
    NAETAB="${ORACLE_HOME}/lib/naeet.o ${ORACLE_HOME}/lib/naect.o"
    NAEDHS="${ORACLE_HOME}/lib/naedhs.o"
    XAONDY="${ORACLE_HOME}/rdbms/lib/xaondy.o"OLIBS="${LCLIENT}"
    OLIBS="${OLIBS} ${LSQL}"
    OLIBS="${OLIBS} ${LNETWORK}"
    OLIBS="${OLIBS} ${LCLIENT}"
    OLIBS="${OLIBS} ${LCOMMON}"
    OLIBS="${OLIBS} ${LGENERIC}"
    OLIBS="${OLIBS} ${LMM}"
    OLIBS="${OLIBS} ${XAONDY}"
    OLIBS="${OLIBS} ${LWTC}"
    OLIBS="${OLIBS} ${LNETWORK}"
    OLIBS="${OLIBS} ${LCLIENT}"
    OLIBS="${OLIBS} ${LCOMMON}"
    OLIBS="${OLIBS} ${LGENERIC}"
    OLIBS="${OLIBS} ${LTRACE}"
    OLIBS="${OLIBS} ${LNLSRTL}"
    OLIBS="${OLIBS} ${LCORE}"
    OLIBS="${OLIBS} ${LNLSRTL}"
    OLIBS="${OLIBS} ${LUNLSRTL}"#SYSLIBS=`cat ${ORACLE_HOME}/lib/sysliblist`" -laio -lm -lc"
    #SYSLIBS=`cat ${ORACLE_HOME}/lib/sysliblist`" -ldl -lm -lc"
    SYSLIBS=`cat ${ORACLE_HOME}/lib/sysliblist`" -ldl -lm -lc -L/usr/lib/gcc-lib/i386-redhat-linux/3.2.2 -lgcc"# Create library
    /bin/rm -f ${LIB_DIR}/${CLNT_LIB} ${MAPFILE}
    ${LD} ${LD_RUNTIME} ${LD_OPT} ${LD_OUT} ${LD_SELF_CONTAINED} \
            ${DEF_ON} ${NAUTAB} ${NAETAB} ${NAEDHS} ${SYMS_SQL} \
            ${SYMS_PLSQL} ${SYMS_OCIC} ${SYMS_LDAP} ${SYMS_NETWORK} ${OLIBS} \
            ${SYSLIBS} ${USRLIBS} > ${MAPFILE}# Create ".so" link to library in a non-development environment only
    # and generate the client static library
    if [ -z "${SRCHOME}" ]
    then
            if [ -s ${LIB_DIR}/${CLNT_LIB} ]
            then
                    cd ${LIB_DIR}
                    rm -f ${CLNT_LNK}
                    ln -s ${CLNT_LIB} ${CLNT_LNK}
            fi
            ${ORACLE_HOME}/bin/genclntst
    fi
    exit 0
      

  11.   

    假设$ORACLE_HOME是/usr/local/oracle那么你先执行export $ORACLE_HOME=/usr/local/oracle,再./genclntsh
      

  12.   

    ld: cannot find -lgcc
    ar: 姝e湪鍒涘缓 /home/oracle/OraHome1/lib/libclntst9.a
    Created /home/oracle/OraHome1/lib/libclntst9.a
      

  13.   

    看看有没有/usr/lib/gcc-lib/i386-redhat-linux/3.2.2或许目录有些不同,你一层层找找看
      

  14.   


    /usr/lib/gcc-lib/i386-redhat-linux/2.96
    ?有的话,把genclntsh里的3.22改成2.96另外 ls /usr/lib/gcc-lib/i386-redhat-linux/看看结果是什么
      

  15.   

    非常感谢surfchen 对我帮助
      

  16.   

    我重新安装一个10g客户端就可以了,不知道为什么,先用吧,20分我已经给了surfchen