===== Getting NRT Up And Running =====
NRT is currently only supported on Ubuntu (for progress on building in OSX visit [[OSXBuildInstructions|this page]]). Once you have a machine up and running with this OS, follow these instructions to setup NRT.
**NOTE:** If you are running Ubuntu 11.10, only want to build modules and don't want to edit NRT's source, then you should just install the .deb package available at http://nrtkit.org
==== Install Required Dependencies ====
* Install dependencies:
# Install boost 45 or later - used for serialization, among other small things
sudo apt-add-repository ppa:antal.buss/boost
# open synaptic and for ^that^ software source change lucid to maverick (if runing lucid)
sudo apt-get update
# Install all dependencies for nrt and gcc4.6 all in one go (we do this first to prevent our gcc4.6 symlinks from getting overwritten later)
sudo apt-get install libcloog-ppl0 libgmpxx4ldbl libmpc2 libppl-c2 libppl7 qt4-qmake libqt4-core libqt4-dev libcv-dev \
libcvaux-dev libhighgui-dev libgtk2.0-dev libgtkmm-2.4-dev libzeroc-ice33-dev cmake
* Download .deb packages for gcc4.6 from here: https://launchpad.net/~ubuntu-toolchain-r/+archive/test/+build/2103518 . Download only the packages for your architecture - either the i386 packages if you have a 32-bit processor, or the amd64 packages if you have a 64-bit processor (either amd or intel). Below is for a 64-bit distribution:
# The following will download the main required 64-bit packages for gcc4.6
wget -c https://launchpad.net/~ubuntu-toolchain-r/+archive/test/+build/2103518/+files/cpp-4.6_4.6-20101218-1_amd64.deb
wget -c https://launchpad.net/~ubuntu-toolchain-r/+archive/test/+build/2103518/+files/fixincludes_4.6-20101218-1_amd64.deb
wget -c https://launchpad.net/~ubuntu-toolchain-r/+archive/test/+build/2103518/+files/g%2B%2B-4.6_4.6-20101218-1_amd64.deb
wget -c https://launchpad.net/~ubuntu-toolchain-r/+archive/test/+build/2103518/+files/gcc-4.6_4.6-20101218-1_amd64.deb
wget -c https://launchpad.net/~ubuntu-toolchain-r/+archive/test/+build/2103518/+files/gcc-4.6-base_4.6-20101218-1_amd64.deb
wget -c https://launchpad.net/~ubuntu-toolchain-r/+archive/test/+build/2103518/+files/libgcc1_4.6-20101218-1_amd64.deb
wget -c https://launchpad.net/~ubuntu-toolchain-r/+archive/test/+build/2103518/+files/libgomp1_4.6-20101218-1_amd64.deb
wget -c https://launchpad.net/~ubuntu-toolchain-r/+archive/test/+build/2103518/+files/libstdc%2B%2B6_4.6-20101218-1_amd64.deb
wget -c https://launchpad.net/~ubuntu-toolchain-r/+archive/test/+build/2103518/+files/libstdc%2B%2B6-4.6-dev_4.6-20101218-1_amd64.deb
wget -c https://launchpad.net/~ubuntu-toolchain-r/+archive/test/+build/2103518/+files/libstdc%2B%2B6-4.6-pic_4.6-20101218-1_amd64.deb
wget -c https://launchpad.net/~ubuntu-toolchain-r/+archive/test/+build/2103518/+files/libmudflap0_4.6-20101218-1_amd64.deb
wget -c http://launchpadlibrarian.net/52052284/libmpfr4_3.0.0-2_amd64.deb
* If you don't find the files, get them from http://ilab.usc.edu/packages/forall/current/gcc46/ instead.
* Install the packages using dpkg
dpkg -i *.deb
apt-get -f install
* Setup the symbolic links to make your system use the new gcc
# Remove the old symbolic links
sudo rm /usr/bin/gcc
sudo rm /usr/bin/g++
sudo rm /usr/bin/c++
# Create symbolic links to the new compiler
sudo ln -s /usr/bin/gcc-4.6 /usr/bin/gcc
sudo ln -s /usr/bin/g++-4.6 /usr/bin/g++
sudo ln -s /usr/bin/g++-4.6 /usr/bin/c++
# Make sure everything is ok - both should report version 4.6.0
gcc --version
g++ --version
==== Install yaml-cpp ====
# Download yaml-cpp v. 2.5 from the Google code site
wget http://yaml-cpp.googlecode.com/files/yaml-cpp-0.2.5.tar.gz
# Unpack and install yaml-cpp
tar xvf yaml-cpp-0.2.5.tar.gz
cd yaml-cpp-0.2.5/ && mkdir build && cd build
cmake .. && make && sudo make install
sudo ldconfig /usr/local/lib/
# Clean up
cd ../.. && rm -rf yaml-cpp-0.2.5 && rm yaml-cpp-0.2.5.tar.gz
==== Install other dependencies ====
# get eigen3 and install it by following option 2 in INSTALL (run cmake, don't just copy the files)
# To install: Download Eigen3
wget http://bitbucket.org/eigen/eigen/get/3.0-beta3.tar.gz
# Unpack and install Eigen3
tar xvf 3.0-beta3.tar.gz
cd 3.0-beta3/ && mkdir build && cd build
cmake .. && make && sudo make install
sudo ldconfig /usr/local/lib/
# Clean up
cd ../.. && rm -rf 3.0-beta3 && rm 3.0-beta3.tar.gz
# TODO: include fix for parallelism.h file
# get flann and install it
# To install: Download flann
wget http://www.cs.ubc.ca/~mariusm/uploads/FLANN/flann-1.6.7-src.zip
# Unpackand install flann
unzip flann-1.6.7-src.zip
cd flann-1-6.7-src && mkdir build && cd build
cmake .. && make && sudo make install
sudo ldconfig /usr/local/lib
# clean up
cd ../.. && rm -rf flann-1.6.7-src && rm flann-1.6.7-src.zip
==== Get NRT ====
* Download a copy of subversion
sudo apt-get install subversion
* Check out the code from our repository.
* You will need a username/password, which you can get by emailing Dr. Itti.
cd ~/workspace/
svn checkout svn://isvn.usc.edu/software/nrt/trunk/nrt
# Enter in username/password...
==== Build NRT ====
* Create a build directory inside of the newly checked out repository
cd ~/workspace/nrt
mkdir build
cd build
* Configure the build using Cmake
cmake ..
* At this point you should see a bunch of happy messages letting you know that all packages have been found.
* Build NRT
make
* Try running some of the test programs included in the build to ensure everything went ok.
./tests/test-ThreadPool
./tests/test-Option
./tests/test-stream --in=random --out=display # Should display some random pixel
# etc...
==== Using the GUI ====
* The NRTMODULEPATH environment variable is a comma-separated list of directories in which NRT should look for Modules. Make sure that the NRTMODULEPATH environment variable is set, by issuing:
export NRTMODULEPATH="${HOME}/nrtilab/src/Modules"
If you are part of the NeovisionII project, you should include your NeoII modules as well, so instead:
export NRTMODULEPATH="${HOME}/nrtilab/src/Modules:${HOME}/nrtilab/src/Apps/nrtneo2/Modules"
You can put this command in your ''~/.bash_aliases'' so that the variable will be set in new terminals you open.
* Start the GUI:
~/nrt/build/nrtDesigner --master
* Start one or more module loaders on one or more machines, typically you would do this in a different terminal from the one in which you have started the GUI:
~/nrt/build/nrtLoader --masterip=192.168.0.254
where you should replace 192.168.0.254 by the IP address of the machine on which you are running the nrtDesigner program. To find out the IP of a machine, just issue a ''ping machine'' and look for the IP in there.
* Ready to rock'n roll!