Compiling OSSIM 1.7.9 on a Solaris 10 64 bit machine

Date written: 15 March 2010 by Aaron Light

Installing the Source Code:

This guide assumes that you are running as root for the duration of the install, and all steps were done on a clean install of Solaris 10.

  • Make sure you have these files in ~/ :

.bashrc (if this file already exists, make sure the following is appended)

source .profile
source ossimbashrc

.profile (if this file already exists, make sure the following is appended)

TERM=gnome
export TERM

CC=gcc
export CC

ossimbashrc

# ossimbashrc, contains all of the environment variables for 
# building ossim and its associated implementations
# be sure to source this file for your build
# in .bashrc   add a source statement to include the ossimbashrc file
# from where it resides.  This assumes it has been placed in your home
# directory.
#
# source ossimbashrc 
#
#


# Where is the Development source code directory
export DEVHOME=${HOME}/Development

# Where is the install target
# for local install
# export DEFAULT_INSTALL=${HOME}/usr_local 
# export INSTALL_HERE=${HOME}/usr_local/ossim

# To be used for LD Project installs
export AFS_INSTALL=/afs/ld/software/gis/ossim
# for system install
export DEFAULT_INSTALL=/usr/local
export INSTALL_HERE=/usr/local

# Where is the OSSIM source code top directory
export OSSIM_DEV_HOME=${DEVHOME}/ossimsource
export OSSIM_HOME=${OSSIM_DEV_HOME}/ossim
export GDAL_HOME=${OSSIM_DEV_HOME}/ossim_dependencies/gdal/gdal-1.5.1
export LIBTIFF_HOME=${INSTALL_HERE}/include
export OP_DIRECTORY=${OSSIM_DEV_HOME}/ossim_plugins

# Variables for Groovy and Grails
export GRAILS_HOME={DEVHOME}/ossimsource/ossim_dependencies/grails-1.0.3
export GROOVY_HOME={DEVHOME}/ossimsource/ossim_dependencies/groovy-1.5.6

export OSSIM_PREFERENCES_FILE=~/ossim_preferences

# OpenSceneGraph Variables
export OSGHOME=${DEVHOME}/ossimsource/ossim_dependencies/OpenSceneGraph/src
OSGFP=/usr/local/share/OpenSceneGraph-Data
export OSG_FILE_PATH=${OSGF9}:${OSGFP}/Images:${OSGFP}/shaders:${OSGFP}/SolarSystem:${OSGFP}/fonts:${OSGFP}/Catch:${OSGFP}/Cubemap_axis:${OSGFP}Cubemap_snow:${OSGFP}/ExampleThumnails:${OSGFP}/Configuration
export OSGDATA=${OSG_FILE_PATH}

# Trolltech Qt variables
export QTDIR=${DEFAULT_INSTALL}/Trolltech/Qt-4.4.0/

# other OSSIM related defs
export OSSIM_QT_HOME=${OSSIM_DEV_HOME}/ossim_qt4
export OSSIMPREDATOR_INC_DIR=${OSSIM_DEV_HOME}/ossimPredator/include
export OSSIMPREDATOR_LIB_DIR=${OSSIM_DEV_HOME}/ossimPredator/lib
export LIBWMS_INC_DIR=${INSTALL_HERE}/include
export LIBWMS_LIB_DIR=${INSTALL_HERE}/lib

# export OPENTHREADS_INC_DIR=${OSGHOME}/src/OpenThreads/include/OpenThreads

# PATHS to find things
export PATH=${INSTALL_HERE}/bin:$QTDIR/bin:$PATH
export LD_LIBRARY_PATH=${INSTALL_HERE}/lib:${INSTALL_HERE}/lib64:$QTDIR/lib:${OSG_LIB_DIR}:${DEFAULT_INSTALL}/lib:$LD_LIBRARY_PATH


# Handy aliases
alias dev='cd ${DEVHOME}; echo "Development Directory";ls'
alias oz='cd ${OSSIM_HOME}; echo "OSSIM Home";ls'
alias ozd='cd ${OSSIM_DEV_HOME}/ossim_dependencies ; echo "OSSIM Dependencies"; ls'
alias osg='cd ${OSGHOME}; echo "OpenSceneGraph"; ls'
alias oqt='cd ${OSSIM_QT_HOME} ; echo "OSSIM QT4 Home"; ls'
alias opt='cd ${OSSIM_DEV_HOME}/ossimPlanet ; echo "ossimPlanet source"; ls'
alias ih='cd ${INSTALL_HERE} ; echo "Install Directory"; ls'
  • Make sure root is using bash.

I did this by editing /etc/passwd and changing the shell command to: /bin/bash

You will also need to run these commands to fix shell inconsistencies:

mv /usr/bin/sh /usr/bin/sh~
ln -s /usr/bin/bash /usr/bin/sh
  • Perl needs a symlink in place for one of the dependencies
    ln -s /usr/bin/perl /usr/local/bin/perl
    
  • Edit /etc/profile and verify the path is correct at the bottom of the file. Mine was:
    PATH="$PATH:$HOME/bin:/usr/xpg6/bin:/usr/xpg4/bin:/usr/ccs/bin:/usr/ucb:/usr/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/sfw/bin:/opt/sfw/bin:/root/bin:/usr/local/sbin:/bin:/opt/csw/bin:/opt/csw/sbin:/opt/csw/gcc3/bin:/usr/sfw/sbin:/opt/csw/mysql5/bin:/usr/ccs/bin"
    export PATH
    

Log out and log back in to reflect changes to the paths.

Here are the packages you will need, downloaded from http://www.sunfreeware.com/indexintel10.html

Version numbers may vary.

pkgadd -d autoconf-2.65-sol10-x86-local
pkgadd -d automake-1.11.1-sol10-x86-local
pkgadd -d binutils-2.20.1-sol10-x86-local
pkgadd -d cmake-2.4.8-sol10-x86-local
pkgadd -d coreutils-8.2-sol10-x86-local
pkgadd -d curl-7.20.0-sol10-x86-local
pkgadd -d db-4.2.52.NC-sol10-intel-local
pkgadd -d expat-2.0.1-sol10-x86-local
pkgadd -d gcc-3.4.6-sol10-x86-local
pkgadd -d gdbm-1.8.3-sol10-intel-local
pkgadd -d gmp-4.2.1-sol10-x86-local
pkgadd -d gtk+-2.12.0-sol10-x86-local
pkgadd -d libiconv-1.13.1-sol10-x86-local
pkgadd -d libidn-1.18-sol10-x86-local
pkgadd -d libintl-3.4.0-sol10-x86-local
pkgadd -d libsigsegv-2.6-sol10-x86-local
pkgadd -d libssh2-1.2.4-sol10-x86-local
pkgadd -d libtool-2.2.6b-sol10-x86-local
pkgadd -d libxml2-2.6.31-sol10-x86-local
pkgadd -d m4-1.4.14-sol10-x86-local
pkgadd -d make-3.81-sol10-x86-local
pkgadd -d mpfr-2.4.0-sol10-x86-local
pkgadd -d nano-2.2.1-sol10-x86-local
pkgadd -d ncurses-5.6-sol10-x86-local
pkgadd -d neon-0.25.5-sol10-x86-local
pkgadd -d openssl-0.9.8l-sol10-x86-local
pkgadd -d opera-10.10.gcc4-static-qt3.pkg
pkgadd -d sed-4.2.1-sol10-x86-local
pkgadd -d subversion-1.4.3-sol10-x86-local
pkgadd -d swig-1.3.36-sol10-x86-local
pkgadd -d zlib-1.2.3-sol10-x86-local

Instructions for building the OSSIM distribution on Solaris 10 systems. This tutorial assumes a build out of a home directory Development folder with default installation at /usr/local as defined by the INSTALL_HERE environmental variable.

The entire OSSIM distribution contains many source directories and dependencies. Proper set up of the environmental variables used during the build is key to a successful build from source code.

Assuming a default installation from source in your home directory:

cd
mkdir Development
cd Development
mkdir ossimsource
cd ossimsource

To check out the entire source code tree from svn, you must be connected to the internet and type:

svn co http://svn.osgeo.org/ossim/tags/v1_7_9 .      (note the trailing dot)

Now we’ll check and use the ‘dev’ alias to change directories:

dev

The prompt should echo back Development Directory and list any files that are in that directory.

Gathering the Dependency Source Code

Make an ossim_dependencies directory

dev
cd ossimsource
mkdir ossim_dependencies
ozd             (should move you to ossim_dependencies directory)

The following dependencies are need to build and can be downloaded into the source directory. URLs are provided.

boost              http://sourceforge.net/projects/boost/files/boost/1.42.0/boost_1_42_0.tar.gz/download
colladadom         http://sourceforge.net/projects/collada-dom/files/Collada%20DOM/2.1/colladadom.tar.gz/download
expat              http://ossim.telascience.org/ossimdata/sourcesnaps/expat-2.0.1.tar.gz
ffmpeg             http://ossim.telascience.org/ossimdata/sourcesnaps/ffmpeg.zip
gcc                ftp://ftp.mirrorservice.org/sites/sourceware.org/pub/gcc/releases/gcc-4.3.4/gcc-4.3.4.tar.gz
gdal   		 http://download.osgeo.org/gdal/gdal-1.5.2.tar.gz
jpeg               http://sourceforge.net/projects/gnuwin32/files/jpeg/6b-4/jpeg-6b-4-src.zip/download
libgeotiff         http://ossim.telascience.org/ossimdata/sourcesnaps/libgeotiff-1.2.3.tgz
libtiff            http://ossim.telascience.org/ossimdata/sourcesnaps/libtiff-4.0.0.tgz  (with bigtiff support)
openmpi            http://www.open-mpi.org/software/ompi/v1.4/downloads/openmpi-1.4.1.tar.gz
pcre               http://sourceforge.net/projects/pcre/files/pcre/7.9/pcre-7.9.tar.gz/download
Qt4                http://ossim.telascience.org/ossimdata/sourcesnaps/qt-x11-opensource-src-4.4.0.tar
wxWidgets          http://prdownloads.sourceforge.net/wxwindows/wxWidgets-2.8.10.tar.gz
OpenSceneGraph
    ozd
    svn co http://www.openscenegraph.org/svn/osg/OpenSceneGraph/tags/OpenSceneGraph-2.4.0 OpenSceneGraph
    svn co http://www.openscenegraph.org/svn/osg/OpenSceneGraph-Data/tags/OpenSceneGraph-Data-2.4.0 OpenSceneGraph-Data

Move and uncompress all of the dependencies into ~/Development/ossimsource/ossim_dependencies

gcc 4

ozd
cd gcc-4.3.4
mkdir objdir
cd objdir
../configure --with-gnu-as --with-as=/usr/sfw/bin/gas --without-gnu-ld --with-ld=/usr/ccs/bin/ld --enable-shared --enable-languages=c,c++
make
make install

wxWidgets

ozd
cd wxWidgets-2.8.10
./configure
make
make install

libjpeg (to make sure we are picking up 64 bit version)

ozd
nano fixdir.sh
#!/bin/sh

find jpeg-6b -type f | while read N
do
          if dos2unix "$N" -o "$N".tmp
          then
                 mv "$N".tmp "$N"
          fi
done

chmod +x jpeg-6b/configure
chmod +x jpeg-6b/ltconfig
chmod +x jpeg-6b/config.sub
chmod +x jpeg-6b/config.guess
chmod +x fixdir.sh
./fixdir.sh

cd jpeg-6b
which libtool
ln -s /usr/local/bin/libtool .
ls
./configure --prefix=/usr/local --enable-static --enable-shared
make
make install

ffmpeg

ozd
cd ffmpeg
export LDFLAGS="-mimpure-text -lrt"
./configure --prefix=${INSTALL_HERE} --disable-vhook --disable-mmx --enable-shared --disable-static
make
make install
export LDFLAGS=""

The include files don’t line up with code, in the install location created ffmpeg dir and moved the libavs down into it.

cd ${INSTALL_HERE}/include
mkdir ffmpeg
mv libav* ffmpeg
cd ffmpeg
cp libavcodec/* .
cp libavdevice/* .
cp libavformat/* .
cp libavutil/* .

EXPAT

ozd
cd expat-2.0.1
./configure --prefix=${INSTALL_HERE} 
make
make install

libtiff (bigtiff)

ozd
cd libtiff-4.0.0
chmod +x configure
./configure --prefix=${INSTALL_HERE} 
make
make install
cd libtiff
cp *.h /usr/local/include

Geotiff

ozd
cd libgeotiff-1.2.3
./configure --prefix=${INSTALL_HERE} --with-libtiff=${INSTALL_HERE} 
rm config.status
./configure --prefix=${INSTALL_HERE} --with-libtiff=${INSTALL_HERE} 
make clean
make
make install

cd ${INSTALL_HERE}/lib
ls  (should see the installed libtiff and libgeotiff libs)

GDAL

ozd
cd gdal-1.5.1
./configure --prefix=${INSTALL_HERE} --with-libtiff=${INSTALL_HERE} --with-libgeotiff=${INSTALL_HERE} --with-expat-inc=${INSTALL_HERE}/include --with-expat-lib=${INSTALL_HERE}/lib  --with-expat=${INSTALL_HERE)
make clean
make
make install

OpenMPI

ozd
cd openmpi-1.4.1
./configure                   (had to run this without args first)
./configure --prefix=${INSTALL_HERE}
make
make install

ColladaDOM 2.1

ozd
cd pcre-7.9
./configure
make
make install
ozd
cd boost_1_42_0
./bootstrap.sh
./bjam install
ozd
cd colladadom_21
nano include/dae.h
    add #include <memory> under the other #includes
cd dom
make project=dom
ih
cd include
mkdir colladadom
ozd
cd colladadom_21/dom
edit the Makefile line 179 to read:
    prefix :=/usr/local
make install
cd build
cd linux-1.4/
cp -r libcollada14dom* ${INSTALL_HERE}/lib/

OpenSceneGraph?

ozd
cd OpenSceneGraph

comment out these lines in src/osgPlugins/net/sockinet.cpp and src/osgPlugins/net/sockstream.cpp

// Do not include anything below that define. That should in no case change any forward decls in
// system headers ...
//#if (defined(__APPLE__)&&(__GNUC__<4)) || 
//(defined(WIN32)&&!defined(__CYGWIN__)) || \
// (!defined(__APPLE__) && !defined(WIN32) && 
//!defined(_XOPEN_SOURCE_EXTENDED) && !defined(__FreeBSD__))
//#define socklen_t int
//#endif
./configure (first time has some errors)
./configure
make
make install
ozd
cp -r OpenSceneGraph-Data /usr/local/share

To see if you have OpenSceneGraph? installed and running:

ozd
cd OpenSceneGraph-Data
osgviewer cow.osg
    press <esc> to quit

OSSIM

oz
./configure --prefix=${INSTALL_HERE} --with-libtiff=${INSTALL_HERE} --with-geotiff=${INSTALL_HERE} --with-freetype=/usr --with-mpi=${INSTALL_HERE} --with-openthreads=${INSTALL_HERE}
make depends
make 
make install
cp ~/Development/ossimsource/ossim/lib/libossim* ${INSTALL_HERE}/lib

ossim_plugins

ozd
cd ../ossim_plugins
make all
make install

Typing:

cd ${INSTALL_HERE}/ossim/lib
ls *_plugin.so

should return these installed, built plugins:

libossimcontrib_plugin.so libossimgdal_plugin.so libossimpng_plugin.so

NOTICE: None of the below steps have been tested. Proceed at your own risk.

Move them into an ossim_plugins directory:

mkdir ossim_plugins (if necessary)
opt
mv -r *_plugins.so ossim_plugins

libwms (doesn't compile correctly in Solaris 10 atm)

need to manually copy lib/include to INSTALL_HERE

 	oz
	cd ../libwms
	make
	cd bin
	cd Linux64/
	cp * ${INSTALL_HERE}/bin/
	cd ${OSSIM_DEV_HOME}/libwms/src/Linux64.Opt   (build location for RH E)
	cp libwms.so ${INSTALL_HERE}/lib/
	cd ../../include/
	cp -r * ${INSTALL_HERE}/include/

ossimPredator

	oz
	cd ../ossimPredator
	mkdir lib
	cd src
	make
	cd ../lib
	cp libossimPredator.so ${INSTALL_HERE}/lib

ossimPlanet

	opt
	cd Make

edit the makedefs file and uncomment the DEV += -DOSSIMPLANET_ENABLE_PREDATOR line.

	opt
	make
	cd src/ossimPlanet/Linux64.Opt    (for RH E 5.0)
	cp libossimPlanet.so ${INSTALL_HERE}/lib

	opt
	cd examples/ossimplanetviewer/Linux64.Opt
	cp ossimplanetviewer ${INSTALL_HERE}/bin
	
	opt
	cd include
	cp -r ossimPlanet ${INSTALL_HERE}/include

Copy the reference data in place

from the ossim_package_support directory, do a recursive copy of the images directory to the install location for future retrival,

	cd
	mkdir .ossim
	opt
	cd ../ossim_package_support
	cp -r fonts icons geoids images ${INSTALL_HERE}/dotossim

make a copy in the install location so other users can copy it

	cp -r ${INSTALL_HERE}/dotossim ~/.ossim 

Trolltech QT 4

This is a fairly lengthy install, so we use the --fast switch to install the minimum. QT is the cross platform GUI system used by imagelinker, iview and ossimplanet.

Be sure to configure with the complete path /usr/local/ossim/Trolltech/Qt-4.4.0.

	ozd
	cd qt-x11-opensource-src-4.4.0
	./configure --prefix=${INSTALL_HERE}/Trolltech/Qt-4.4.0 --fast
	make
	make install

Verification:

	which qmake

should return:

/usr/local//Trolltech/Qt-4.4.0/bin/qmake

OSSIM_QT4

	oqt
	qmake
	make
	cd bin
	mv * ${INSTALL_HERE}/bin/
	cd ../include/
	mv * ${INSTALL_HERE}/include/
	cd ../lib
	mv * ${INSTALL_HERE}/lib/
	cd 
	which imagelinker
	imagelinker

ossimPlanetQt

	oz
	cd ../ossimPlanetQt		
	cd src
	vi src.pro
	/INSTALL_PREFIX
	:177

uncomment the lines 162, 179 to define INSTALL_PREFIX and LOCAL_ROOT to $INSTALL_HERE

At this approximate location you can uncomment the INSTALL_PREFIX assignment to install at your variable location

e.g. INSTALL_PREFIX=/usr/local/lib uncomment the INSTALL_PREFIX=$$

also change the LOCAL_ROOT by uncommenting the one with INSTALL_PREFIX :159 LOCAL_ROOT=/usr/local/

	cd ..
	make clean
	qmake
	make
	make install

Changing the src.pro install doesn’t get the application, copy manually

	cp ossimplanet ${INSTALL_HERE}/bin

Line 184 the -L for LOCAL_ROOT was not in parenthesis and not being picked up. Same with the include line

added -L$$(INSTALL_PREFIX)/lib in LIBS += lines

to use the ossim commands, the startup environment will need to be modified for any user that wants to use them.  Need to have LD_LIBRARY_PATH variable set in the appropriate shell file (.cshrc or .bashrc).  Any custom ossim_preferences should be in a local version of the ossim_preferences in a users home directory.  Otherwise, all preferences will come from the system level file.

OMS - OSSIM Mapping Services

oz
cd ../oms/com
make
make install  (might put it in /usr/local/ossim move includes and libs to /usr/local)
cd ../joms
ant dist

needed to update ant to 1.7

ossim preferences file setup

There is a template under ossim/etc/templates need to fill this out, save (~/ossim_preferences) and

make sure that

export OSSIM_PREFS_FILE=~/ossim_preferences

is set in your bashrc or ossimbashrc file.

Note, the ~.ossim subdirectory (dotossim) will be picked up by default in the home directory

~/.ossim

Last modified 10 years ago Last modified on Mar 16, 2010 6:42:02 AM