On Mon, 23 Feb 2004, Kevin B. McCarty wrote: > 1) To fix this, the only thing I should have to do is change my linker > flags as below, is that correct? > > -L/usr/X11R6/lib -lXm -lXt -lXp -lXext -lX11 -lSM -lICE -lXpm -lnsl -lcrypt > -ldl -lg2c > ^^^^^^^^^^^^^^^^ > added flags ---------------------------------------'
correction: assuming my library dependency checking script (attached) is correct, having run it on an shlib directory filled with symlinks to the libs in /usr/X11R6/lib, the linkage for Lesstif programs should be: -L/usr/X11R6/lib -lXm -lXp -lXt -lXext -lXpm -lX11 -lSM -lICE is that right? -- Kevin B. McCarty <[EMAIL PROTECTED]> Physics Department WWW: http://www.princeton.edu/~kmccarty/ Princeton University GPG: public key ID 4F83C751 Princeton, NJ 08544
#!/bin/bash # This script creates lists of all the dependencies and symbols required # by each shared library in $CERNLEVEL/shlib and program in $CERNLEVEL/bin. # Should be run while in the top-level cernlib-<version> source dir. errormsg() { echo "Not in correct directory or cernlib not compiled with shlibs" exit 1 } # remove old files for file in `ls -1 *.txt` libdeps bindeps ; do rm -rf $file ; done if [ ! -d shlib ] ; then errormsg ; fi mkdir -p libdeps [ -d bin ] && mkdir -p bindeps # create symbol lists... # exclude symbols found in libc and libg2c since we already know everything # depends on those EXCLUDE='(^[^_]_[^_]|^do_.io$|^pow_zz$|^G77|@@GLIBC)' cd shlib for lib in `ls -1 lib*.so` ; do nm -D $lib | grep ' U ' | awk '{print $2}' \ | egrep -v "$EXCLUDE" > ../${lib%%.so}.undef.txt nm -D $lib | grep -v ' U ' | awk '{print $3}' > ../${lib%%.so}.def.txt done if [ -d "../bin" ] ; then cd ../bin for prog in `ls -1` ; do if [ -n "`nm $prog 2> /dev/null`" ] ; then nm $prog | grep ' U ' | awk '{print $2}' \ | egrep -v "$EXCLUDE" > ../$prog.undef.txt fi done fi # create lists of symbol dependencies cd .. for symlist in `ls -1 *.undef.txt` ; do ( for symbol in `cat $symlist` ; do egrep '^'$symbol'$' *.def.txt done ) | tr ':.' ' ' | awk '{print $1 " " $4}' | sort \ >> ${symlist%%.undef.txt}.symdeps.txt done cat *.def.txt > defined.txt for symlist in `ls -1 *.undef.txt` ; do ( for symbol in `cat $symlist` ; do if [ -z "`egrep -l '^'$symbol'$' defined.txt`" ] ; then echo $symbol fi done ) | sort > ${symlist%%.undef.txt}.not-in-cernlib.txt done # delete unneeded files rm -f defined.txt *.def.txt *.undef.txt # create lists of file dependencies with number of dependent symbols for file in `ls -1 *.symdeps.txt` ; do tempfile=${file%%.symdeps.txt}.filedeps.txt.tmp cat $file | awk '{ print $1 }' | sort | uniq > $tempfile for file2 in `cat $tempfile` ; do echo "$file2 `grep $file2 $file | wc -l`" >> ${tempfile%%.tmp} done rm -f $tempfile done # move to proper places mv lib*.txt libdeps/ [ -d bindeps ] && mv *.txt bindeps/ exit 0