📄 mklib
字号:
FINAL_LIBS=${LIBNAME} else RUNLIB="lib${LIBNAME}.${MAJOR}" DEVLIB="lib${LIBNAME}.sl" echo "mklib: Making HP-UX shared library: " ${RUNLIB} ${DEVLIB} ld -b -o ${RUNLIB} +b ${RUNLIB} ${OBJECTS} ${DEPS} ln -s ${RUNLIB} ${DEVLIB} FINAL_LIBS="${RUNLIB} ${DEVLIB}" fi ;; 'AIX') if [ $STATIC = 1 ] ; then LIBNAME="lib${LIBNAME}.a" echo "mklib: Making AIX static library: " ${LIBNAME} ar -ruv ${LIBNAME} ${OBJECTS} FINAL_LIBS=${LIBNAME} else EXPFILE="lib${LIBNAME}.exp" OFILE=shr.o #Want to be consistent with the IBM libGL.a LIBNAME="lib${LIBNAME}.a" # shared objects are still stored in the .a libraries OPTS="-bE:${EXPFILE} -bM:SRE -bnoentry" rm -f ${EXPFILE} ${OFILE} NM="/bin/nm -eC" echo "#! /usr/lib/${LIBNAME}" > ${EXPFILE} ${NM} ${OBJECTS} | awk '{ if ((($2 == "T") || ($2 == "D") || ($2 == "B")) \ && ( substr($1,1,1) != ".")) { if (substr ($1, 1, 7) != "__sinit" && substr ($1, 1, 7) != "__sterm") { if (substr ($1, 1, 5) == "__tf1") print (substr ($1, 7)) else if (substr ($1, 1, 5) == "__tf9") print (substr ($1, 15)) else print $1 } } }' | sort -u >> ${EXPFILE} cc ${OPTS} -o ${OFILE} ${OBJECTS} ${DEPS} ar -r ${LIBNAME} ${OFILE} FINAL_LIBS="${LIBNAME}" fi ;; 'AIX64') if [ $STATIC = 1 ] ; then LIBNAME="lib${LIBNAME}.a" echo "mklib: Making AIX static library: " ${LIBNAME} ar -X64 -ruv ${LIBNAME} ${OBJECTS} FINAL_LIBS=${LIBNAME} else EXPFILE="lib${LIBNAME}.exp" OFILE=shr.o #Want to be consistent with the IBM libGL.a LIBNAME="lib${LIBNAME}.a" # shared objects are still stored in the .a libraries OPTS="-bE:${EXPFILE} -bM:SRE -bnoentry -q64" rm -f ${EXPFILE} ${OFILE} NM="/bin/nm -eC -X64" echo "#! /usr/lib/${LIBNAME}" > ${EXPFILE} ${NM} ${OBJECTS} | awk '{ if ((($2 == "T") || ($2 == "D") || ($2 == "B")) \ && ( substr($1,1,1) != ".")) { if (substr ($1, 1, 7) != "__sinit" && substr ($1, 1, 7) != "__sterm") { if (substr ($1, 1, 5) == "__tf1") print (substr ($1, 7)) else if (substr ($1, 1, 5) == "__tf9") print (substr ($1, 15)) else print $1 } } }' | sort -u >> ${EXPFILE} cc ${OPTS} -o ${OFILE} ${OBJECTS} ${DEPS} ar -X64 -r ${LIBNAME} ${OFILE} FINAL_LIBS="${LIBNAME}" fi ;; 'OpenSTEP') LIBNAME="lib${LIBNAME}.a" echo "mklib: Making OpenSTEP static library: " ${LIBNAME} libtool -static -o ${LIBNAME} - ${OBJECTS} FINAL_LIBS=${LIBNAME} ;; 'OSF1') if [ $STATIC = 1 ] ; then LIBNAME="lib${LIBNAME}.a" echo "mklib: Making OSF/1 static library: " ${LIBNAME} rm -f ${LIBNAME} ar -ruv ${LIBNAME} ${OBJECTS} FINAL_LIBS=${LIBNAME} else VERSION="${MAJOR}.${MINOR}" LIBNAME="lib${LIBNAME}.so" echo "mklib: Making OSF/1 shared library: " ${LIBNAME} rm -f ${LIBNAME}.${VERSION} ld -o ${LIBNAME}.${VERSION} -shared -no_archive -set_version ${VERSION} -soname ${LIBNAME}.${VERSION} -expect_unresolved \* -all ${OBJECTS} ${DEPS} ln -sf ${LIBNAME}.${VERSION} ${LIBNAME} FINAL_LIBS="${LIBNAME} ${LIBNAME}.${VERSION}" fi ;; 'Darwin') if [ $STATIC = 1 ] ; then LIBNAME="lib${LIBNAME}.a" echo "mklib: Making Darwin static library: " ${LIBNAME} LINK="ar" OPTS="-ruv" ${LINK} ${OPTS} ${LIBNAME} ${OBJECTS} FINAL_LIBS=${LIBNAME} else LIBNAME="${LIBNAME}.dylib" echo "mklib: Making Darwin shared library: " ${LIBNAME} FLAGS="-dynamiclib -multiply_defined suppress" if [ $CPLUSPLUS = 1 ] ; then LINK="g++" else LINK="cc" fi ${LINK} ${FLAGS} -o ${LIBNAME} ${OBJECTS} ${DEPS} FINAL_LIBS=${LIBNAME} fi ;; 'LynxOS') LIBNAME="lib${LIBNAME}.a" echo "mklib: Making LynxOS static library: " ${LIBNAME} rm -f ${LIBNAME} ar ru ${LIBNAME} ${OBJECTS} FINAL_LIBS=${LIBNAME} ;; 'BeOS') if [ $STATIC = 1 ] ; then LIBNAME="lib${LIBNAME}.a" echo "mklib: Making BeOS static library: " ${LIBNAME} ar -cru "${LIBNAME}" ${OBJECTS} else LIBNAME="lib${LIBNAME}.so" echo "mklib: Making BeOS shared library: " ${LIBNAME} gcc -nostart -Xlinker "-soname=${LIBNAME}" -L/Be/develop/lib/x86 -lbe ${DEPS} ${OBJECTS} -o "${LIBNAME}" mimeset -f "${LIBNAME}" setversion "${LIBNAME}" -app ${MAJOR} ${MINOR} ${PATCH} -short "Powered by Mesa3D!" -long "Powered by Mesa3D!" fi FINAL_LIBS=${LIBNAME} ;; 'QNX') LIBNAME="lib${LIBNAME}.a" echo "mklib: Making QNX library: " ${LIBNAME} wlib ${LIBNAME} ${OBJECTS} FINAL_LIBS=${LIBNAME} ;; 'MorphOS') LIBNAME="lib${LIBNAME}.a" echo "mklib: Making MorphOS library: " ${LIBNAME} ppc-morphos-ar rc ${LIBNAME} ${OBJECTS} FINAL_LIBS="${LIBNAME}" ;; 'icc') # Intel C compiler LIBNAME="lib${LIBNAME}" # prefix with "lib" if [ $STATIC = 1 ] ; then echo "mklib: Making Intel ICC static library: " ${LIBNAME}.a LINK="ar" OPTS="-ruv" # make lib ${LINK} ${OPTS} ${LIBNAME}.a ${OBJECTS} # finish up FINAL_LIBS="${LIBNAME}.a" else OPTS="-shared" VERSION="${MAJOR}.${MINOR}.${PATCH}" echo "mklib: Making Intel ICC shared library: " ${LIBNAME}.so.${VERSION} if [ $CPLUSPLUS = 1 ] ; then LINK="icc" else LINK="icc" fi # rm any old libs rm -f ${LIBNAME}.so.${VERSION} rm -f ${LIBNAME}.so.${MAJOR} rm -f ${LIBNAME}.so # make lib ${LINK} ${OPTS} -o ${LIBNAME}.so.${VERSION} ${OBJECTS} ${DEPS} # make usual symlinks ln -s ${LIBNAME}.so.${VERSION} ${LIBNAME}.so.${MAJOR} ln -s ${LIBNAME}.so.${MAJOR} ${LIBNAME}.so # finish up FINAL_LIBS="${LIBNAME}.so.${VERSION} ${LIBNAME}.so.${MAJOR} ${LIBNAME}.so" fi ;; 'aix-gcc') # AIX with gcc if [ $STATIC = 1 ] ; then LIBNAME="lib${LIBNAME}.a" echo "mklib: Making AIX GCC static library: " ${LIBNAME} rm -f ${LIBNAME} ar ru ${LIBNAME} ${OBJECTS} FINAL_LIBS=${LIBNAME} else LIBNAME="lib${LIBNAME}.so" # prefix with "lib", suffix with ".so" echo "mklib: Making AIX GCC shared library: " ${LIBNAME} # remove old lib rm -f ${LIBNAME} # make the lib gcc -shared -Wl,-G ${OBJECTS} ${DEPS} -o ${LIBNAME} # NOTE: the application linking with this library must specify # the -Wl,-brtl flags to gcc FINAL_LIBS=${LIBNAME} fi ;; 'ultrix') # XXX untested if [ $STATIC = 0 ] ; then echo "mklib: Warning shared libs not supported on Ultrix" fi LIBNAME="lib${LIBNAME}.a" echo "mklib: Making static library for Ultrix: " ${LIBNAME} rm -f ${LIBNAME} ar ru ${LIBNAME} ${OBJECTS} FINAL_LIBS="${LIBNAME}" ;; CYGWIN*) # GCC-based environment CYGNAME="cyg${LIBNAME}" # prefix with "cyg" LIBNAME="lib${LIBNAME}" # prefix with "lib" if [ $STATIC = 1 ] ; then echo "mklib: Making" $ARCH "static library: " ${LIBNAME}.a LINK="ar" OPTS="-ru" # make lib ${LINK} ${OPTS} ${LIBNAME}.a ${OBJECTS} ranlib ${LIBNAME}.a # finish up FINAL_LIBS=${LIBNAME}.a else OPTS="-shared -Wl,-export-all -Wl,--out-implib=${LIBNAME}-${MAJOR}.dll.a" echo "mklib: Making" $ARCH "shared library: " ${LIBNAME}-${MAJOR}.dll if [ $CPLUSPLUS = 1 ] ; then LINK="g++" else LINK="gcc" fi # rm any old libs rm -f ${LIBNAME}-${MAJOR}.dll rm -f ${LIBNAME}.dll.a rm -f ${LIBNAME}.a # make lib ${LINK} ${OPTS} -o ${CYGNAME}-${MAJOR}.dll ${OBJECTS} ${DEPS} # make usual symlinks ln -s ${LIBNAME}-${MAJOR}.dll.a ${LIBNAME}.dll.a # finish up FINAL_LIBS="${LIBNAME}-${MAJOR}.dll.a ${LIBNAME}.dll.a" # special case for installing in bin FINAL_BINS="${CYGNAME}-${MAJOR}.dll" fi ;; 'Mona') # GCC-based environment if [ $STATIC = 1 ] ; then echo "mklib: Making" $ARCH "static library: lib${LIBNAME}.a" LINK="ar" OPTS="-ru" # make lib ${LINK} ${OPTS} lib${LIBNAME}.a ${OBJECTS} ranlib lib${LIBNAME}.a # finish up FINAL_LIBS=lib${LIBNAME}.a else IMPNAME="lib${LIBNAME}-imp.a" DLLNAME=`echo ${LIBNAME} | tr '[a-z]' '[A-Z]'`".DLL" OPTS="-s --export-all-symbols --out-implib ${IMPNAME}" echo "mklib: Making" $ARCH "shared library: " ${DLLNAME} LINK="ld" # rm any old libs rm -f ${IMPNAME} ${DLLNAME} # make lib ${LINK} ${OPTS} -o ${DLLNAME} ${OBJECTS} ${DEPS} # finish up FINAL_LIBS="${IMPNAME} ${DLLNAME}" fi ;; 'example') # If you're adding support for a new architecture, you can # start with this: if [ $STATIC = 1 ] ; then LIBNAME="lib${LIBNAME}.a" echo "mklib: Making static library for example arch: " ${LIBNAME} rm -f ${LIBNAME} ar rv ${LIBNAME} ${OBJECTS} FINAL_LIBS="${LIBNAME}" else LIBNAME="lib${LIBNAME}.so" # prefix with "lib" echo "mklib: Making shared library for example arch: " ${LIBNAME} ld -o ${LIBNAME} ${OBJECTS} ${DEPS} FINAL_LIBS="${LIBNAME}" fi ;; *) echo "mklib: ERROR: Don't know how to make a static/shared library for" ${ARCH} echo "mklib: Please add necessary commands to mklib script." ;;esac## Put library files into installation directory if specified.#if [ ${INSTALLDIR} != "." ] ; then echo "mklib: Installing" ${FINAL_LIBS} "in" ${INSTALLDIR} mv ${FINAL_LIBS} ${INSTALLDIR}/fi
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -