SyntaxHighlighter

Showing posts with label Ubuntu. Show all posts
Showing posts with label Ubuntu. Show all posts

Monday, April 20, 2009

Ossim on Ubuntu causes error on missing llampi++

When compiling Ossim with lam mpi on Ubuntu 9, you might receive this error:
/usr/bin/ld: cannot find -llammpi++
The easiest way to fix this is to ensure liblam4 and openmpi is installed (via the Synaptic Package Manager) and to edit the Makefile.common in the ossim directory ($OSSIM_HOME), changing the MPI_LIB_PATH.
# Open the Makefile.common
gedit $OSSIM_HOME/Makefile.common

# Locate the following line and set its path to
/usr/lib/lam/lib
MPI_LIB_PATH = -L/usr/lib/lam/lib

Compile GDAL with GeoTiff support

I've been running Ubuntu on my personal machine for a while now and just realized that the gdal synaptic package does not enable support for GeoTiffs. This is where Gentoo has one up, but its not the end of the world. You can 'simply' build GDAL from source with the correct flags.

Here's what I did:
1. Install the Tiff, GeotTiff, Png and OpenJpeg dev packages and their dependencies (libtiff4-dev, libgeotiff-dev, libpng12-dev and libopenjpeg-dev). Also be sure to install g++ and subversion.
2. Fire up a terminal and checkout the GDAL subversion repository anywhere in your home directory:
svn co http://svn.osgeo.org/gdal/trunk/gdal
3. Go into the GDAL directory and run configure:
cd gdal
./configure --with-geotiff=/usr --with-jpeg=/usr --with-libtiff=/usr --without-libtool
4. In theory you should be able to run make now, but the configure script missed the geotiff header files directory so I had to set these manually. This is the error I received:
make -C gtiff install-obj
make[2]: Entering directory `/home/andreh/workspace/project-ossim_dev/gdal/frmts/gtiff'
/bin/sh /home/andreh/workspace/project-ossim_dev/gdal/libtool --mode=compile --tag=CXX g++ -g -O2  -Wall  -I/home/andreh/workspace/project-ossim_dev/gdal/port -I/home/andreh/workspace/project-ossim_dev/gdal/gcore -I/home/andreh/workspace/project-ossim_dev/gdal/alg -I/home/andreh/workspace/project-ossim_dev/gdal/ogr -I/home/andreh/workspace/project-ossim_dev/gdal/ogr/ogrsf_frmts   -DOGR_ENABLED -I/home/andreh/workspace/project-ossim_dev/gdal/port -I/usr/lib/include -I -I/include  -c -o ../o/geotiff.lo geotiff.cpp
libtool: compile:  g++ -g -O2 -Wall -I/home/andreh/workspace/project-ossim_dev/gdal/port -I/home/andreh/workspace/project-ossim_dev/gdal/gcore -I/home/andreh/workspace/project-ossim_dev/gdal/alg -I/home/andreh/workspace/project-ossim_dev/gdal/ogr -I/home/andreh/workspace/project-ossim_dev/gdal/ogr/ogrsf_frmts -DOGR_ENABLED -I/home/andreh/workspace/project-ossim_dev/gdal/port -I/usr/lib/include -I -I/include -c geotiff.cpp  -fPIC -DPIC -o ../o/.libs/geotiff.o
geotiff.cpp:34:21: error: xtiffio.h: No such file or directory
geotiff.cpp:35:21: error: geotiff.h: No such file or directory
geotiff.cpp:36:27: error: geo_normalize.h: No such file or directory
geotiff.cpp:37:23: error: geovalues.h: No such file or directory
geotiff.cpp:46: error: 'GTIF' was not declared in this scope
geotiff.cpp:46: error: expected primary-expression before ',' token
geotiff.cpp:46: error: 'GTIFDefn' was not declared in this scope
geotiff.cpp:46: error: expected primary-expression before ')' token
geotiff.cpp:46: error: initializer expression list treated as compound expression
geotiff.cpp:47: error: 'GTIF' was not declared in this scope
geotiff.cpp:47: error: expected primary-expression before ',' token
geotiff.cpp:47: error: expected primary-expression before 'const'
geotiff.cpp:47: error: initializer expression list treated as compound expression
geotiff.cpp: In destructor 'virtual GTiffDataset::~GTiffDataset()':
geotiff.cpp:2249: error: 'XTIFFClose' was not declared in this scope
geotiff.cpp: In member function 'void GTiffDataset::WriteGeoTIFFInfo()':
geotiff.cpp:3336: error: 'TIFFTAG_GEOPIXELSCALE' was not declared in this scope
geotiff.cpp:3346: error: 'TIFFTAG_GEOTIEPOINTS' was not declared in this scope
geotiff.cpp:3363: error: 'TIFFTAG_GEOTRANSMATRIX' was not declared in this scope
geotiff.cpp:3393: error: 'TIFFTAG_GEOTIEPOINTS' was not declared in this scope
geotiff.cpp:3404: error: 'GTIF' was not declared in this scope
geotiff.cpp:3404: error: 'psGTIF' was not declared in this scope
geotiff.cpp:3413: error: 'TIFFTAG_GEOKEYDIRECTORY' was not declared in this scope
geotiff.cpp:3420: error: 'TIFFTAG_GEODOUBLEPARAMS' was not declared in this scope
geotiff.cpp:3422: error: 'TIFFTAG_GEOASCIIPARAMS' was not declared in this scope
geotiff.cpp:3425: error: 'GTIFNew' was not declared in this scope
geotiff.cpp:3428: error: 'GTIFSetFromOGISDefn' cannot be used as a function
geotiff.cpp:3434: error: 'GTRasterTypeGeoKey' was not declared in this scope
geotiff.cpp:3434: error: 'TYPE_SHORT' was not declared in this scope
geotiff.cpp:3435: error: 'RasterPixelIsPoint' was not declared in this scope
geotiff.cpp:3435: error: 'GTIFKeySet' was not declared in this scope
geotiff.cpp:3438: error: 'GTIFWriteKeys' was not declared in this scope
geotiff.cpp:3439: error: 'GTIFFree' was not declared in this scope
geotiff.cpp: In static member function 'static GDALDataset* GTiffDataset::OpenDir(GDALOpenInfo*)':
geotiff.cpp:4285: error: 'XTIFFClose' was not declared in this scope
geotiff.cpp: In member function 'CPLErr GTiffDataset::OpenOffset(TIFF*, GTiffDataset**, toff_t, int, GDALAccess, int)':
geotiff.cpp:4640: error: 'TIFFTAG_GEOPIXELSCALE' was not declared in this scope
geotiff.cpp:4647: error: 'TIFFTAG_GEOTIEPOINTS' was not declared in this scope
geotiff.cpp:4659: error: 'TIFFTAG_GEOTRANSMATRIX' was not declared in this scope
geotiff.cpp:4700: error: 'TIFFTAG_GEOTIEPOINTS' was not declared in this scope
geotiff.cpp:4724: error: 'GTIF' was not declared in this scope
geotiff.cpp:4724: error: 'hGTIF' was not declared in this scope
geotiff.cpp:4725: error: 'GTIFDefn' was not declared in this scope
geotiff.cpp:4725: error: expected `;' before 'sGTIFDefn'
geotiff.cpp:4730: error: 'GTIFNew' was not declared in this scope
geotiff.cpp:4739: error: 'sGTIFDefn' was not declared in this scope
geotiff.cpp:4739: error: 'GTIFGetDefn' was not declared in this scope
geotiff.cpp:4741: error: 'GTIFGetOGISDefn' cannot be used as a function
geotiff.cpp:4748: error: 'GTRasterTypeGeoKey' was not declared in this scope
geotiff.cpp:4749: error: 'GTIFKeyGet' was not declared in this scope
geotiff.cpp:4751: error: 'RasterPixelIsPoint' was not declared in this scope
geotiff.cpp:4757: error: 'GTIFFree' was not declared in this scope
geotiff.cpp: In static member function 'static TIFF* GTiffDataset::CreateLL(const char*, int, int, int, GDALDataType, char**)':
geotiff.cpp:5707: error: 'XTIFFClose' was not declared in this scope
geotiff.cpp: In static member function 'static GDALDataset* GTiffDataset::CreateCopy(const char*, GDALDataset*, int, char**, int (*)(double, const char*, void*), void*)':
geotiff.cpp:6217: error: 'TIFFTAG_GEOPIXELSCALE' was not declared in this scope
geotiff.cpp:6226: error: 'TIFFTAG_GEOTIEPOINTS' was not declared in this scope
geotiff.cpp:6242: error: 'TIFFTAG_GEOTRANSMATRIX' was not declared in this scope
geotiff.cpp:6279: error: 'TIFFTAG_GEOTIEPOINTS' was not declared in this scope
geotiff.cpp:6301: error: 'GTIF' was not declared in this scope
geotiff.cpp:6301: error: 'psGTIF' was not declared in this scope
geotiff.cpp:6303: error: 'GTIFNew' was not declared in this scope
geotiff.cpp:6304: error: 'GTIFSetFromOGISDefn' cannot be used as a function
geotiff.cpp:6310: error: 'GTRasterTypeGeoKey' was not declared in this scope
geotiff.cpp:6310: error: 'TYPE_SHORT' was not declared in this scope
geotiff.cpp:6311: error: 'RasterPixelIsPoint' was not declared in this scope
geotiff.cpp:6311: error: 'GTIFKeySet' was not declared in this scope
geotiff.cpp:6314: error: 'GTIFWriteKeys' was not declared in this scope
geotiff.cpp:6315: error: 'GTIFFree' was not declared in this scope
geotiff.cpp:6325: error: 'XTIFFClose' was not declared in this scope
make[2]: *** [../o/geotiff.lo] Error 1
make[2]: Leaving directory `/home/andreh/workspace/project-ossim_dev/gdal/frmts/gtiff'
make[1]: *** [gtiff-install-obj] Error 2
make[1]: Leaving directory `/home/andreh/workspace/project-ossim_dev/gdal/frmts'
make: *** [frmts-target] Error 2
And this is how to get rid of it:
# open the GDALmake.opt file with an editor
gedit GDALmake.opt

# locate the CPPFLAGS line and add the include path at the end "-I/usr/include/geotiff"
CPPFLAGS    =  -I$(GDAL_ROOT)/port -I/usr/lib/include -I -I/include -I/usr/include/geotiff
5. One can now run make and make install:
make
sudo make install