Jim,
The short answer is that I think you may need to have your Linux installation upgraded with newer versions of the 'base' libraries. Freesurfer requires, but does not include, a number of libraries that are normally included in most Linux installations. The newer 'dev' version of Freesurfer includes the following libraries in its 'lib' directory (which themselves are built against the 'base' libraries, as you have discovered):
GSL, Tcl/Tk/Tix/BLT, the MINC tools, and Qt
To see which libraries a freesurfer binary depends upon, use the 'ldd' command. On a rh7.3 system of ours (the oldest Linux platform we support), here is the output for one of the binaries, where the 'base' libraries are the ones in the /usr/lib and /usr/X11 directories:
[martinos01:~] (nmr-dev-env) ldd `which tkmedit` libtix.so.0 => /usr/local/freesurfer/dev/lib/tcltktixblt/lib/libtix.so.0 (0x40015000) libtk8.4.so => /usr/local/freesurfer/dev/lib/tcltktixblt/lib/libtk8.4.so (0x4004f000) libtcl8.4.so => /usr/local/freesurfer/dev/lib/tcltktixblt/lib/libtcl8.4.so (0x40112000) libglut.so.3 => /usr/lib/libglut.so.3 (0x401c8000) libSM.so.6 => /usr/X11R6/lib/libSM.so.6 (0x40204000) libICE.so.6 => /usr/X11R6/lib/libICE.so.6 (0x4020c000) libXmu.so.6 => /usr/X11R6/lib/libXmu.so.6 (0x40223000) libXi.so.6 => /usr/X11R6/lib/libXi.so.6 (0x40239000) libGLU.so.1 => /usr/lib/libGLU.so.1 (0x40241000) libGL.so.1 => /usr/lib/libGL.so.1 (0x402bc000) libXext.so.6 => /usr/X11R6/lib/libXext.so.6 (0x40318000) libdl.so.2 => /lib/libdl.so.2 (0x40325000) libX11.so.6 => /usr/X11R6/lib/libX11.so.6 (0x40328000) libgsl.so.0 => /usr/pubsw/packages/gsl/current/lib/libgsl.so.0 (0x403fe000) libgslcblas.so.0 => /usr/pubsw/packages/gsl/current/lib/libgslcblas.so.0 (0x4055a000) libjpeg.so.62 => /usr/lib/libjpeg.so.62 (0x40587000) libtiff.so.3 => /usr/lib/libtiff.so.3 (0x405a5000) libz.so.1 => /usr/lib/libz.so.1 (0x405e9000) libm.so.6 => /lib/i686/libm.so.6 (0x405f7000) libcrypt.so.1 => /lib/libcrypt.so.1 (0x4061a000) libc.so.6 => /lib/i686/libc.so.6 (0x42000000) libXt.so.6 => /usr/X11R6/lib/libXt.so.6 (0x40647000) libstdc++-libc6.2-2.so.3 => /usr/lib/libstdc++-libc6.2-2.so.3 (0x40693000) libGLcore.so.1 => /usr/lib/libGLcore.so.1 (0x406d6000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
So you can see that most of the 'base' libraries are version 6. The same is true for rh9. You can compare this output to your own output from the same command to discover which libraries on your system are old.
Also, I noticed that your mni tools seem to be in the /usr/local/mni directory, rather than in the $FREESURFER_HOME/lib/mni directory. You may have a lingering MINC_BIN_DIR statement in your .cshrc file, pointing to a prior installation of the MINC tools, but I don't think this is the heart of your problem (old libraries).
Unfortunately, there is no 'universal' freesurfer distribution for this very reason that Linux platforms have varying versions of the base libraries. If you have a sysadmin, perhaps he can upgrade the libs on your rh9 system. The newer Linux installations, like CentOS 4, have automatic upgrade tools, which alleviate this problem, and is why we will soon be abandoning our own rh7.3 and rh9 Linux systems at the MGH NMR center (which require manual upgrade).
Lastly, you can restart recon-all from different stages. Run 'recon-all -help' to see the different stages (basically autorecon1, autorecon2 and autorecon3).
Nick
On Wed, 2005-10-26 at 16:49 -0400, James Voyvodic wrote:
I've upgraded to the latest development release (freesurfer-Linux-rh9-dev20051003-full.tar.gz) running on Linux Redhat 9 on an x86 platform. Recon-all crashes, apparently because of failed library dependencies, with the following message:
/usr/local/mni/bin/volume_stats: /usr/lib/libstdc++.so.6: version `CXXABI_1.3' not found (required by /usr/local/mni/bin/volume_stats) /usr/local/mni/bin/volume_stats: /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4' not found (required by /usr/local/mni/bin/volume_stats) nu_estimate_np_and_em: crashed while running volume_stats (termination status=256) nu_correct: crashed while running nu_estimate_np_and_em (termination status=256) ERROR: nu_correct Linux hawking 2.4.20-31.9 #1 Tue Apr 13 18:04:23 EDT 2004 i686 i686 i386 GNU/Linux recon-all exited with errors at Wed Oct 26 15:17:17 EDT 2005
It had previously crashed because it couldn't find libstdc++.so.6 at all, so I tried to appease it by using the old trick of linking libstdc++.so.5 to libstdc++.so.6, but obviously that wasn't enough.
So the main question is: what libraries are needed to run the new version(s) of FreeSurfer? Is there a way to download the missing libraries from somewhere?
When I installed and tried to run the most recent stable release (freesurfer-Linux-rh9-v2.1.tar.gz) I was foiled because I didn't have libtixwish installed, which is why I went to the development release that had more libraries. Yum says I have libstdc++ and doesn't offer a .so.6 variant. Do I need a different version of Linux?
A side question: If recon-all crashes part way through, is there a way to skip the successful steps when restarting or does it have to redo all the steps in its autorecon (e.g. autorecon1) script?
thanks, Jim
======================== James T. Voyvodic, Ph.D. Brain Imaging and Analysis Center Duke University Medical Center e-mail: jim.voyvodic@duke.edu
Freesurfer mailing list Freesurfer@nmr.mgh.harvard.edu https://mail.nmr.mgh.harvard.edu/mailman/listinfo/freesurfer