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 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 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