- 论坛徽章:
- 0
|
以下是一段oracle, $ORACLE_HOME/bin/genclntsh 的code, 请教大家,很多关键步骤怎么解读? 谢谢。
# Network
LDFLAGS="`cat ${OLIB}/ldflags`"
LNENT=
[ -r ${OLIB}/libnent10.a ] && LNENT="-lnent10"
# NZ
LNZ=
[ -r ${OLIB}/libnnz10.so ] && LNZ="-lnnz10"
LNCRYPT="-lnsslb10 -lncrypt10 -ln10 -lnl10 -lnro10"
LNETWORK="${LDFLAGS} ${LNENT} ${LNZ} ${LNCRYPT} ${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}"
SYMS_XDK="`listf xdk` ${LXDK}"
#
# Library names and locations
CLNT_NAM=clntsh # (short) library name
CLNT_VER=10.1 # library version number
CLNT_LNK=lib${CLNT_NAM}.so # name of symlink to library
CLNT_LNK_NPT=lib${CLNT_NAM}_nopthread.so
CLNT_LIB=${CLNT_LNK}.${CLNT_VER} # actual library file name
CLNT_LIB_NPT=${CLNT_LNK_NPT}.${CLNT_VER}
LIB_DIR=${OLIB} # lib. destination directory
if [ ! -z "$SRCHOME" ]
then
LIB_DIR=${SRCHOME}/rdbms/${ULIB} # 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
Remove_File ${LIB_DIR}/${CLNT_LIB}
mv ${LIB_DIR}/${CLNT_LIB}.tmp ${LIB_DIR}/${CLNT_LIB}
Check_Status $? "Failed to move ${CLNT_LIB}.tmp"
chmod +wx ${LIB_DIR}/${CLNT_LIB}
Check_Status $? "Failed to make ${CLNT_LIB}.tmp writeable"
fi
#
# Define the name of the map file
MAPFILE=${LIB_DIR}/${CLNT_NAM}.map
MAPFILE_NPT=${LIB_DIR}/${CLNT_NAM}_nopthread.map
# Name of shared library being created
SHLIBNAME="${LIB_DIR}/${CLNT_LIB}"
#
# Linker command and options
#LD="ld -v -G -b +s +n -y semtimedop -L${OLIB}" # shared library link command
#added by ramaraj
#LD="ld -v -G -b +s -L${ORACLE_HOME}/${LIB} -Bsymbolic"
LD="ld -v -G -b +s +n -y semtimedop -L${OLIB} -Bsymbolic" # shared library link command
LD_RUNTIME=
LD_OPT="+h ${CLNT_LIB}" # name inserted into library
LD_OUT="-o ${LIB_DIR}/${CLNT_LIB}" # output specification
LD_OUT_NPT="-o ${LIB_DIR}/${CLNT_LNK_NPT}"
LD_SELF_CONTAINED="-z "
#
# Oracle library dependencies
DEF_ON="${RDBMSLIB}/kpudfo.o"
NAUTAB="${OLIB}/nautab.o"
NAETAB="${OLIB}/naeet.o ${OLIB}/naect.o"
NAEDHS="${OLIB}/naedhs.o"
XAONDY="${RDBMSLIB}/xaondy.o"
OLIBS="${LCLIENT}"
OLIBS="${OLIBS} ${LSQL}"
OLIBS="${OLIBS} ${LNETWORK}" // 这里怎么理解? library depencencies是怎么起作用的?
OLIBS="${OLIBS} ${LCLIENT}"
OLIBS="${OLIBS} ${LCOMMON}"
OLIBS="${OLIBS} ${LGENERIC}"
OLIBS="${OLIBS} ${LMM}"
OLIBS="${OLIBS} ${XAONDY}"
OLIBS="${OLIBS} ${LNETWORK}"
OLIBS="${OLIBS} ${LCLIENT}"
OLIBS="${OLIBS} ${LCOMMON}"
OLIBS="${OLIBS} ${LGENERIC}"
OLIBS="${OLIBS} ${LTRACE}"
OLIBS="${OLIBS} ${LSNLSRTL}"
OLIBS="${OLIBS} ${LNLSRTL}"
OLIBS="${OLIBS} ${LCORE}"
OLIBS="${OLIBS} ${LSNLSRTL}"
OLIBS="${OLIBS} ${LNLSRTL}"
OLIBS="${OLIBS} ${LUNLSRTL}"
OLIBS="${OLIBS} ${LXDK}" |
|