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
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
Hi,
I was trying to run recon-all on a Redhat Enterprise machine and it failed when trying to run nu_correct with the error:
command not found
The problem was that nu_correct assumes that perl is in /usr/pubsw/bin/perl, while on the default Redhat install it is at /usr/bin/perl. As a work around I created a /usr/pubsw/bin and made a soft link to perl there and now nu_correct works. But, this seems like a hack and I was wondering if there is a better way to tell the MNI programs where perl actually lives. Thanks very much.
Xander
Xander,
In the newer 'dev' releases (from about Sept 1st, I think), there is a script in the $FREESURFER_HOME/bin directory called 'fixup_mni_paths' that will perform the changes that you describe (replaces the /usr/pubsw path with the path to the perl installed on your system).
I've attached the script in case you don't have it. (cp the file to $FREESURFER_HOME/bin, type gunzip fixup_mni_paths.gz to uncompress, type fixup_mni_paths to run)
Nick
On Thu, 2005-10-27 at 14:31 -0500, Xander Meadow wrote:
Hi,
I was trying to run recon-all on a Redhat Enterprise machine and it failed when trying to run nu_correct with the error:
command not found
The problem was that nu_correct assumes that perl is in /usr/pubsw/bin/perl, while on the default Redhat install it is at /usr/bin/perl. As a work around I created a /usr/pubsw/bin and made a soft link to perl there and now nu_correct works. But, this seems like a hack and I was wondering if there is a better way to tell the MNI programs where perl actually lives. Thanks very much.
Xander
Freesurfer mailing list Freesurfer@nmr.mgh.harvard.edu https://mail.nmr.mgh.harvard.edu/mailman/listinfo/freesurfer
freesurfer@nmr.mgh.harvard.edu