Difference between revisions of "SimpleITK/GettingStarted/Visual guide to building on Linux"

From KitwarePublic
Jump to navigationJump to search
Line 49: Line 49:
 
[[File:SimpleITK_visual_guide_step02_02.png|200px|thumb|In the terminal, use apt-get to install the build tools]]
 
[[File:SimpleITK_visual_guide_step02_02.png|200px|thumb|In the terminal, use apt-get to install the build tools]]
 
Open a terminal window (Menu > Terminal) and run the following command:
 
Open a terminal window (Menu > Terminal) and run the following command:
  sudo apt-get install cmake cmake-curses-gui gcc g++ git giggle monodevelop
+
  sudo apt-get install cmake cmake-curses-gui gcc g++ git
  
 
Confirm that you want to install the packages (press "y"), then wait for the installation to complete.
 
Confirm that you want to install the packages (press "y"), then wait for the installation to complete.
Line 55: Line 55:
 
[[File:SimpleITK_visual_guide_step02_03.png|200px|thumb|Build tools could also be installed using the software manager]]
 
[[File:SimpleITK_visual_guide_step02_03.png|200px|thumb|Build tools could also be installed using the software manager]]
 
Alternatively, you could manually select each software package from the Software Manager (Menu > Software Manager).
 
Alternatively, you could manually select each software package from the Software Manager (Menu > Software Manager).
 +
 +
By default building SimpleITK produces the SimpleITK C++ libraries and the SimpleITK Lua interpreter.  It also supports bindings for other languages.  To build this support, additional packages need to be installed.  The following table shows the supported language bindings and the corresponding command to install the packages required for each language.
 +
 +
{| class="languagetable"
 +
|-
 +
! Programming Language
 +
! Command to install the build tools
 +
|-
 +
| C++ and Lua
 +
| sudo apt-get install cmake cmake-curses-gui gcc g++ git
 +
|-
 +
| C#
 +
| sudo apt-get install cmake cmake-curses-gui gcc g++ git monodevelop
 +
|-
 +
| Java
 +
| sudo apt-get install cmake cmake-curses-gui gcc g++ git eclipse
 +
|-
 +
| R
 +
| sudo apt-get install cmake cmake-curses-gui gcc g++ git r-base r-base-dev
 +
|-
 +
| Ruby
 +
| sudo apt-get install cmake cmake-curses-gui gcc g++ git ruby
 +
|-
 +
| Python
 +
| sudo apt-get install cmake cmake-curses-gui gcc g++ git python python-dev
 +
|-
 +
| Tcl
 +
| sudo apt-get install cmake cmake-curses-gui gcc g++ git tcl tcl-dev tk tk-dev
 +
|-
 +
| All languages
 +
| sudo apt-get install cmake cmake-curses-gui gcc g++ git monodevelop eclipse r-base r-base-dev ruby python python-dev tcl tcl-dev tk tk-dev
 +
|}
  
 
== Step 3: Get SimpleITK source code ==
 
== Step 3: Get SimpleITK source code ==

Revision as of 13:24, 11 March 2014

This guide gives detailed instructions for building SimpleITK on Linux. It is written for beginners getting started with SimpleITK.

Why Linux?

  • Linux is freely available
  • It has all the required tools
  • Did I mention it's free?

Step 1: Get Linux

The first step is to install a Linux distribution. Some popular ones are:

And here is a comparison of those distributions.

There are many online tutorials explaining how to install your chosen Linux distribution:

If you are a Windows user, you may consider running Linux on a virtual machine. Some popular virtual machine environments are:

If you are a Mac OS X user, you can run also run Linux in a virtual machine. Two virtual machine environments for OS X are:

Again, there are heaps of tutorials:

This guide uses Debian 7, but the steps are very similar for other Linux distributions.

Step 2: Install build tools

Install the build tools by opening the terminal

The next step is to install the required build tools.

In the terminal, use apt-get to install the build tools

Open a terminal window (Menu > Terminal) and run the following command:

sudo apt-get install cmake cmake-curses-gui gcc g++ git

Confirm that you want to install the packages (press "y"), then wait for the installation to complete.

Build tools could also be installed using the software manager

Alternatively, you could manually select each software package from the Software Manager (Menu > Software Manager).

By default building SimpleITK produces the SimpleITK C++ libraries and the SimpleITK Lua interpreter. It also supports bindings for other languages. To build this support, additional packages need to be installed. The following table shows the supported language bindings and the corresponding command to install the packages required for each language.

Programming Language Command to install the build tools
C++ and Lua sudo apt-get install cmake cmake-curses-gui gcc g++ git
C# sudo apt-get install cmake cmake-curses-gui gcc g++ git monodevelop
Java sudo apt-get install cmake cmake-curses-gui gcc g++ git eclipse
R sudo apt-get install cmake cmake-curses-gui gcc g++ git r-base r-base-dev
Ruby sudo apt-get install cmake cmake-curses-gui gcc g++ git ruby
Python sudo apt-get install cmake cmake-curses-gui gcc g++ git python python-dev
Tcl sudo apt-get install cmake cmake-curses-gui gcc g++ git tcl tcl-dev tk tk-dev
All languages sudo apt-get install cmake cmake-curses-gui gcc g++ git monodevelop eclipse r-base r-base-dev ruby python python-dev tcl tcl-dev tk tk-dev

Step 3: Get SimpleITK source code

The next step is to get the SimpleITK source code using git.

Decide where you want to put the source code. I'm putting mine in home/ITK:

cd ~
mkdir ITK
cd ITK
Create a directory to place the source code using the Terminal or the file manager

Of course you can do this visually via the file manager (Menu > Files).

Get the SimpleITK source code using git

Now download the SimpleITK source code, by entering the following command in the Terminal:

git clone --recursive  http://itk.org/SimpleITK.git

Now change to the SimpleITK directory:

cd SimpleITK

Step 4: Build SimpleITK

The next step is to start building.

The recommended way to build is via the so-called "super build":

mkdir Build
cd Build
sudo cmake ../SuperBuild

If you prefer not to build with elevated privileges (i.e. omit sudo) you can firstly install Python distribute:

sudo apt-get install curl
curl -O http://python-distribute.org/distribute_setup.py
sudo python distribute_setup.py

and then simply execute CMake:

cmake ../SuperBuild

The SuperBuild generates make files which takes care of downloading and building ITK, SWIG, and Lua, as well as SimpleITK. On my system, by default, wrappers were generated for C# and Lua.

To start the (long) build process, type:

make

On my laptop (Acer Aspire 5755G, Intel® Core™ i7-2630QM CPU @ 2.00GHz × 8, 2GB RAM) the build took about 4 hours.

After the build is finished, you need to add SimpleITK to your LD_LIBRARY_PATH:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:~/ITK/SimpleITK/Build/lib

You can now (optionally) check whether the build was successful:

cd SimpleITK-build
ctest

All (or at least most) of the tests should pass.

Step 5: Use SimpleITK

A simple C# program

Open MonoDevelop

This section will describe how to create a simple C# application using SimpleITK from MonoDevelop.

Open MonoDevelop (Menu > Programming > MonoDevelop).

Create Console Project

Select File > New > Solution.

Select C# > Console Project. Enter a suitable name e.g. "SimpleITK" and uncheck "Create directory for directory". Select "Forward" and then "OK".

Edit References

In the Solution explorer, right-click "Selection" and select "Edit References...".

Add SimpleITKCSharpManaged.dll

Select the ".Net Assembly" tab, navigate to "~/ITK/SimpleITK/Build/SimpleITK-build/Wrapping/CSharpBinaries", select "SimpleITKCSharpManaged.dll", click "Add", and then close the window by selecting "OK". This will copy "SimpleITKCSharpManaged.dll" to your build directory e.g. "bin/Debug" or "bin/Release". You must also manually copy "libSimpleITKCSharpNative.so" to your build directories:

mkdir ~/Projects/SimpleITK/bin/Debug
mkdir ~/Projects/SimpleITK/bin/Release
cp ~/ITK/SimpleITK/Build/SimpleITK-build/Wrapping/CSharpBinaries/libSimpleITKCSharpNative.so ~/Projects/SimpleITK/bin/Debug
cp ~/ITK/SimpleITK/Build/SimpleITK-build/Wrapping/CSharpBinaries/libSimpleITKCSharpNative.so ~/Projects/SimpleITK/bin/Release

SimpleITK has now been added as a project reference.

A simple C# program

The following short program reads a file from the SimpleITK testing data, applies a binary threshold, and writes the output to the project binary directory:

using System;
using System.IO;
using ITK = itk.simple.SimpleITK;

namespace SimpleITK {
    class MainClass {
        public static void Main (string[] args) {
            string inputFilename = "/home/dan/ITK/SimpleITK/Testing/Data/Input/cthead1.png";
            if (File.Exists(inputFilename)) {
                var input = ITK.ReadImage(inputFilename);
                var binary = ITK.BinaryThreshold(input, 100, 255, 255, 0);
                ITK.WriteImage(binary, "cthead1-binary.png");
            } else {
                Console.WriteLine("File '{0}' does not exist", inputFilename);
            }
        }
    }
}

To build the project press "F8" or select Build > Build All from the menu.

To debug the project, add a breakpoint at a desired location and press "F5".

A more complex C# program

Using Lua