Differences between revisions 72 and 113 (spanning 41 versions)
Revision 72 as of 2016-04-20 11:33:16
Size: 4127
Editor: ZekeKaufman
Comment:
Revision 113 as of 2019-03-27 13:50:10
Size: 0
Editor: AndrewHoopes
Comment: Documentation has been consolidated in the Build Guide
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
#pragma section-numbers on
This page is targeted at those who wish to develop and build the freesurfer source code on their Linux platform. These instructions have been tested for Centos 6 Desktop Edition, Ubuntu 14.04 LTS, and Debian 8.

Those who wish to add a binary to the freesurfer software suite should consult the 'Adding a new binary to the tree' section of the [[https://surfer.nmr.mgh.harvard.edu/fswiki/DevelopersGuide#Addinganewbinarytothetree|Developers Guide]].
<<TableOfContents(3)>>
=== Get the Source Code ===

Users can download Freesurfer source code via the read-only git repo. A simple clone of the repo is enough to perform a build of all freesurfer binaries. However, if a user wishes to perform full Freesurfer installation locally, he/she will need [[https://git-annex.branchable.com/ | git-annex]] in order to download all the data files required for a full installation.


{{{
$> git clone http://freesurfer.net/anonftp/pub/dist/freesurfer/repo/freesurfer.git

## get data files if installing locally
$> cd freesurfer
$> git annex get .

}}}

/* === Get the build tools (Ubuntu plantforms only) === If you are on an Ubuntu machine you will have to install the following packages:{{{sudo apt-get install autoconf libtool gfortran cvs}}} */


=== Install System Libraries ===

Building freesurfer requires various system specific libraries be installed on your machine. Depending on your specific linux distribution, the required system packages are listed below:

'''CentOS 6:'''
{{{
$> yum groupinstall "Development Tools"
$> yum install mesa-libGLU-devel \
            freetype-devel.x86_64 \
            libuuid-devel.x86_64 \
            uuid-c++-devel.x86_64 \
            libXmu-devel.x86_64 \
            libXi-devel.x86_64 \
            lapack-devel.x86_64 \
            liblapack-devel.x86_64 \
            libXaw-devel.x86_64 \
            libpng-devel.x86_64
}}}

'''Ubuntu 14.04 LTS / Debian 8:'''
{{{
$> sudo apt-get install build-essential \
            tcsh \
            libtool-bin \
            libtool \
            automake \
            gfortran \
            libglu1-mesa-dev \
            libfreetype6-dev \
            uuid-dev \
            libxmu-dev \
            libxmu-headers \
            libxi-dev \
            libx11-dev \
            libxt-dev \
            libjpeg62-dev \
            libxaw7-dev \
            liblapack-dev
}}}

=== Library Dependencies ===

In order to compile freesurfer, you will need to download and install our prebuilt bundle of 3rd party dependancies. Download the package and extract its content. Remember the extraction location as you will need to pass that directory to the {{{configure}}} script.

/* '''''On 64bit systems''''' */
{{{
$> cd ~
$> wget ftp://surfer.nmr.mgh.harvard.edu/pub/dist/fs_supportlibs/prebuilt/centos6_x86_64/centos6-x86_64-packages.tar.gz
$> tar -xzvf centos6-x86_64-packages.tar.gz
$> ./centos6-x86_64-packages/setup.sh
}}}

=== Setup, Configure, Make ===
Determine the location you want Freesurfer to be installed. For example, in case case we will assume the user wants freesurfer to be installed in {{{/home/USER/freesurfer}}}. Type the following commands in the top-level Freesurfer directory (the directory that contains configure.in and all the mri_* and mris_* directories.):

{{{
$> cd ~/freesurfer
$> ./setup_configure

# Centos
$> ./configure --disable-Werror --with-pkgs-dir=/home/username/centos6-x86_64-packages --prefix=/home/username/fs_install

# Ubuntu
$> ./configure --disable-Werror --with-pkgs-dir=/home/username/centos6-x86_64-packages --prefix=/home/username/fs_install --disable-xawplus-apps --disable-tcltk-apps

$> make -j4
$> make install
}}}

Done!

Its possible some systems (Ubuntu) will complain about a missing jpeg library after the {{{configure}}} script is run, or during runtime. If this happens, create the following symbolic link:
{{{
$> cd /usr/lib64
$> sudo ln -s libjpeg.so.62 libjpeg.so
}}}

Send your comments/questions/feedback to zkaufman@nmr.mgh.harvard.edu