Version 85 (modified by 16 years ago) ( diff ) | ,
---|
Table of Contents
Compiling GRASS on MS-Windows
Dependencies required for building with MinGW
Compiling your own copy of GRASS is greatly simplified by using the OSGeo4W directory structure to install most dependencies and downloading the rest from a few other locations. Follow the steps below to set up the build environment for GRASS.
Install the OSGeo4W directory structure
OSGeo4W has several of the required dependencies for compiling GRASS:
- Download the OSGeo4W installer from here.
- Run the installer.
- Select Advanced Install, and Next.
- Set the install directory to c:\OSGeo4W (other directories or fine if there are no spaces in the path but make sure to adjust the instructions below (?))
- Select grass from the desktop section (this is a binary but we'll compile from source later).
- Also select:
- Commandline_Utilities
- avce00
- gpsbabel
- Libs:
- fftw-devel
- freetype-devel
- freetype-devel-mingw
- gsl-libs
- gsl-devel
- libpng-devel
- libpng-devel-mingw
- libtiff-devel
- libxdr
- mingw-libs (contains mingw-style libraries for VC build binaries and depends on gdal, libpq, libjpeg-devel, sqlite3, libtiff, zlib, proj)
- pdcurses-devel
- tcltk-devel
- zlib-devel
- Click next, the selected packages and their required subpackages will be downloaded and installed automatically.
Install the environment for compilation (MingW)
- Run msys (there should be an icon on the desktop)
- Note for Vista 64bit: in case that MSYS starts to open multiple windows, close them all. Check first this discussion. A solutions seems to be to download http://downloads.sourceforge.net/mingw/MSYS-1.0.11-20070729.tar.bz2 (or newer?). Open the tarball, and copy the bin directory over C:\osgeo4w\apps\msys\bin. see also https://sourceforge.net/forum/forum.php?forum_id=720513
- Type:
mkdir /c/osgeo4w/apps/msys/osgeo4w
- Copy c:\osgeo4w\apps\msys\etc\fstab.sample to c:\osgeo4w\apps\msys\etc\fstab (without .sample)
- Open c:\osgeo4w\apps\msys\etc\fstab
- At line 16, change:
c:/mingw /mingw c:/ActiveState/perl /perl
To:
c:/osgeo4w/ /osgeo4w
- Download the MinGW packages:
- bin-utils from here
- gcc-core from here
- gcc-g++ from here
- mingw32-make from here
- mingw-runtime from here
- mingw-utils from here
- w32api from here
- Unpack all to c:\osgeo4w
- Download an updated make from here (required for grass-7.0.svn)
- Unpack to c:\osgeo4w\apps\msys
Pre-built Binaries
Download: (or newer??)
- bison from here
- bison-deps from here
- flex from here
- gettext-bin from here
- gettext-lib from here
- libintl-bin from here
- libintl-lib from here
- regex from here
Unpack all to c:\osgeo4w
Compiling and Installing GRASS (6.4.0)
- Download the latest GRASS 6.4.0 source code from here.
- Unpack to c:\osgeo4w\usr\src
- Open c:\osgeo4w\usr\src\grass64\mswindows\osgeo4w\package.sh and at line 12, change:
--with-libs="/c/OSGeo4W/lib /c/MinGW/lib" \ --with-includes="/c/OSGeo4W/include /c/MinGW/include" \
To:
--with-libs=/c/OSGeo4W/lib \ --with-includes=/c/OSGeo4W/include \
- To compile, type in MSYS console:
export PATH="/osgeo4w/bin:$PATH" cd /osgeo4w/usr/src/grass-6.4xxx (change to dir of the version you downloaded) ./mswindows/osgeo4w/package.sh
When finished, you should have the following compilation log (c:\osgeo4w\usr\src\grass-6.4xxx\error.log):
(UPDATE: Makefile fixed to avoid building r.li if Msys detected)
GRASS GIS compilation log ------------------------- Started compilation: Mon Feb 16 10:11:17 GMT 2009 -- Errors in: /usr/local/src/grass-6.4.0/raster/r.li/r.li.daemon ... make: *** [default] Error 1
Currently r.li.* cannot be compiled on Windows, but grass will run fine without them.
Because of these errors in the install script stops. To finish it type:make install
Now GRASS should be installed in c:\osgeo4w\apps\grass-6.4.0\
Usage
To start grass use the icon on the desktop.
OR, if you want to be able to use the command line from within grass, you'll need a different start-up file.
Open C:\OSGeo4W\apps\grass\bin\grass64 and at line 24 add:
(UPDATE: PYTHONPATH setting bug in Init.sh now fixed)
if [ -z "$PYTHONPATH" ] ; then PYTHONPATH="$GISBASE/etc/python" else PYTHONPATH="$GISBASE/etc/python:$PYTHONPATH" fi export PYTHONPATH
- To start grass, type in MSYS console:
/osgeo4w/apps/grass/bin/grass64
Or to use the new wxpython GUI:
/osgeo4w/apps/grass/bin/grass64 -wxpython
Compiling and Installing Development Versions of GRASS
Optional Installation of Subversion
The GRASS source tree is stored in an online repository called Subversion. Rather than downloading source trees from the website, subversion lets you keep up to date, and manage your modifications, with simply commands. For more see Working with SVN.
- Download Collabnet Subversion Command-Line Client (1.6) from here. (You'll have to register on Collabnet)
- Run the installer and install to a path without spaces(?) such as c:/Subversion or c:/Programs/Subversion
- Open c:\osgeo4w\etc\ini\msys.bat and at line 1 add the path to your subversion folder, eg. change:
PATH %PATH%;%OSGEO4W_ROOT%\apps\msys\bin
To:
PATH %PATH%;%OSGEO4W_ROOT%\apps\msys\bin;/c/Programs/Subversion
Alternatively TortoiseSVN, a plugin for Windows Explorer, can be used for managing the local source tree. Download here.
Grass-6.5.svn (develbranch_6)
- Download the grass-6.5.svn source tree with:
- subversion (also see here
cd /osgeo4w/usr/src svn co http://svn.osgeo.org/grass/grass/branches/develbranch_6/ grass6-devel #For Subsequent updates, type: cd /osgeo4w/usr/src/grass6-devel svn up
- subversion (also see here
OR
- Download a weekly snapshot from here
- Follow the instructions above for grass-6.4.0, but change all grass64 to grass65, etc.
nb. To update your source tree later using subversion and recompile type:
cd /osgeo4w/usr/src/grass6-devel svn up rm configure-stamp ./mswindows/osgeo4w/package.sh
Grass-7.0.svn (trunk)
- Download the grass-7.0.svn source tree with:
- subversion (also see here
cd /osgeo4w/usr/src svn checkout https://svn.osgeo.org/grass/grass/trunk grass_trunk #For Subsequent updates, type: cd /osgeo4w/usr/src/grass_trunk svn up
- subversion (also see here
OR
- Download a weekly snapshot from here and unpack to c:\osgeo4w\usr\src (if you use this method in the instructions below change "grass_trunk" to the folder name of your snapshot eg. "grass-7.0.svn_src_snapshot_2009_03_29")
- Open c:\osgeo4w\etc\ini\msys.bat and at line 3 add:
set PYTHONPATH=%OSGEO4W_ROOT%\apps\Python25
Open c:\osgeo4w\usr\src\grass_trunk\lib\python\grass.py, and at line 208 change:
(UPDATE: automatic OS detection fixed in SVN; moved to core.py)
os.execvp("g.parser", [name] + argv)
To:
os.execvp("g.parser.exe", [name] + argv)
Open c:\osgeo4w\usr\src\grass_trunk\include\Make\Multi.make, at at line 19 change:
(UPDATE: suspect that this isn't needed; for now skip it but please let us know if you find it breaks without it)
$(BIN)/%$(EXE): $(DEPENDENCIES) $(call linker) define objs_rule $(BIN)/$(1)$(EXE): $$(patsubst %.o,$(OBJDIR)/%.o,$$($$(subst .,_,$(1)_OBJS)))
To:
define objs_rule $(BIN)/$(1)$(EXE): $$(patsubst %.o,$(OBJDIR)/%.o,$$($$(subst .,_,$(1)_OBJS))) $(DEPENDENCIES) $$(call linker)
- Download the package.sh script from here
(why not use the native grass 7 ver?? grass/trunk/mswindows/osgeo4w/package.sh)
- Put in c:\osgeo4w\usr\src\grass_trunk\mswindows\osgeo4w\ (you may have to create the latter two folders)
- Open c:\osgeo4w\usr\src\grass_trunk\mswindows\osgeo4w\package.sh, and make the same changes as in the grass-6.4.0 section above
- Also, at line 35 change:
(UPDATE: not needed if you pull mswindows\osgeo4w\package.sh from the GRASS 7 source code)
--with-freetype-includes=/osgeo4w/include/freetype2
To:
--with-freetype-includes=/osgeo4w/include/freetype2 \ --without-cairo \ --without-geos
- To compile, type in MSYS console:
cd /osgeo4w/usr/src/grass_trunk ./mswindows/osgeo4w/package.sh
Once the script fails on the r.li.* errors (see above), type:
(UPDATED: fixed to avoid building r.li if Msys detected)
make install
- Once this is finished open c:\osgeo4w\apps\grass\grass-7.0.svn\etc\Init.sh, and at line 150 change:
(still aplicable???)
PATH="$GRASS_LD_LIBRARY_PATH"
To:
PATH="$GRASS_LD_LIBRARY_PATH:$PATH"
- Open c:\osgeo4w\apps\grass\bin\grass70, and at line 25 add:
(still needed???)
if [ -z "$PYTHONPATH" ] ; then PYTHONPATH="$GISBASE/etc/python" else PYTHONPATH="$GISBASE/etc/python:$PYTHONPATH" fi export PYTHONPATH
- You're finished, start with:
/osgeo4w/apps/grass/bin/grass70
nb. To update your source tree later using subversion and recompile type:
cd /osgeo4w/usr/src/grass_trunk make distclean svn up rm configure-stamp ./mswindows/osgeo4w/package.sh
Troubleshooting
Here are a few common problems and their solutions:
With module... | If you get the error | Do the following |
r.mapcalc, r.univar, or raster3d/base | No rule to make target ... needed by 'progs' | Update msys's make (see step 8 in the MinGW section above) |
scripts/* | ImportError: No module named grass | Fix PYTHONPATH to *nix-style (eg. PYTHONPATH=/osego4w/apps/Python25 )
|
TODO
- QGIS
- Add cairo support to grass-7.0.svn
- Add geos support for grass-7.0.svn (need geos-config file)
Building with MS Visual Studio
See also
- GRASS package page in OSGeo4W (including packaging notes)
- Develop your own GRASS modules on MS-Windows
- http://wiki.qgis.org/qgiswiki/BuildingFromSource by QGIS Team
- http://www.webalice.it/marco.pasetti/grass/BuildFromSource.html by Marco Pasetti
- http://www.webalice.it/marco.pasetti/qgis+grass/BuildFromSource.html by Marco Pasetti