Wiki Page Content

Revision 19 as of 2010-06-18 20:04:20

Clear message

Compiling EMAN2 on Windows

1. Use cmake to generate Visual Studio 2008 solution:

  • Download cmake windows installer cmake-2.8.1-win32-x86.exe from http://www.cmake.org/HTML/index.html.

  • run cmake, select build solution for "visual c++ 9.0", fill the EMAN2 source directory to "Where is the source code", and specify a directory to "Where to build the binaries".
  • click configure button, then OK. You will get error dialog. Then follow the next item to solve all dependency libraries.

2. The dependent libraries for EMAN2 building:

  • Note: I suppose all packages are installed on C: drive. You can adjust it according to your actual path.
  • Python

    Download python-2.6.5.msi from http://www.python.org, run it to install.

    set PYTHON_INLCUDE_PATH to C:/Python26/include
    set PYTHON_LIBRARY to C:/Python26/libs/python26.lib
  • Numpy

    Download numpy-1.4.1-win32-superpack-python2.6.exe from http://numpy.scipy.org, run it to install.

    set NUMPY_INCLUDE_PATH to C:/Python26/Lib/site-packages/numpy/core/include
  • Boost.python

    Download boost_1_43_0.zip and boost-jam-3.1.18-1-ntx86.zip from http://www.boost.org/users/download/.

    unzip boost-jam-3.1.18-1-ntx86.zip, you will get a executable file bjam.exe, put this file in your PATH(make sure you can execute it in a console window).
    unzip boost_1_43_0.zip.
    open a Visual Studio 2008 Command Prompt, cd C:\boost_1_43_0
    run bootstrap.bat
    bjam --with-python toolset=msvc link=shared threading=multi runtime-link=shared
    set the BOOST_INCLUDE_PATH to C:/boost_1_43_0/include
    set the BOOST_LIBRARY to C:/boost_1_43_0/bin.v2/libs/python/build/msvc-9.0/release/threading-multi/boost_python-vc80-mt-1_43.lib
  • HDF5

    Download hdf5-1.8.4-patch1-win32-vs2008-ivf101-enc.zip from ftp://ftp.hdfgroup.org/HDF5/current/bin/windows/.

    unzip hdf5-1.8.4-patch1-win32-vs2008-ivf101-enc.zip, get a folder hdf5lib.
    set the HDF5_INCLUDE_PATH to C:/hdf5lib/include.
    set the HDF5_LIBRARY to C:/hdf5lib/dll/hdf5dll.lib.
  • FFTW3

    Download precompiled fftw3.1.2 windows dlls fftw-3.2.2.pl1-dll32.zip from http://www.fftw.org/install/windows.html.

    unzip fftw-3.2.2.pl1-dll32.zip.
    open a Visual Studio 2008 Command Prompt, cd c:\fftw-3.2.2.pl1-dll32.

    follow the instruction from http://www.fftw.org/install/windows.html, run these commands:

    lib.exe /machine:i386 /def:libfftw3f-3.def
    set FFTW3_INCLUDE_PATH to C:/fftw-3.2.2.pl1-dll32.
    set FFTW3_LIBRARY to C:/fftw-3.2.2.pl1-dll32/libfftw3f-3.lib
  • GSL

    Download gsl-1.13-windows-binaries.zip from http://david.geldreich.free.fr/dev.html

    unzip gsl-1.13-windows-binaries.zip to C:\gsl.
    set GSL_INCLUDE_PATH to C:/gsl/include.
    set GSL_CBLAS_INCLUDE_PATH to C:/gsl/include.
    set GSL_LIBRARY to C:/gsl/lib/gsl.lib.
    set GSL_CBLAS_LIBRARY to C:/gsl/lib/cblas.lib.
  • libtiff

    Download tiff-3.8.2-1-lib.zip from http://gnuwin32.sourceforge.net/packages/tiff.htm, click the zip link close to "Developer files".

    unzip tiff-3.8.2-1-lib.zip. In C drive, create directory include and lib.
    open a Visual Studio 2008 Command Prompt, cd c:\tiff-3.8.2-1-lib
    Run this commands:
    lib.exe /machine:i386 /def:libtiff.def
    copy header files in C:\tiff-3.8.2-1-lib\include to C:\include, copy C:\tiff-3.8.2-1-lib\libtiff.lib to C:\lib.
    set TIFF_INCLUDE_PATH to C:/include.
    set TIFF_LIBRARY to C:/lib/libtiff.lib.

    download binary tiff-3.8.2-1-bin.zip from http://gnuwin32.sourceforge.net/packages/tiff.htm. Save the libtiff3.dll for runtime use.

  • libjpeg

    Download jpeg-6b-4-lib.zip from http://gnuwin32.sourceforge.net/packages/jpeg.htm, click the zip link close to "Developer files".

    unzip jpeg-6b-4-lib.zip to to C:\jpeg-6b-4-lib.
    open a Visual Studio 2008 Command Prompt, cd c:\tiff-3.8.2-1-lib
    Run this commands:
    lib.exe /machine:i386 /def:jpeg.def
    copy header files in C:\jpeg-6b-4-lib/include to C:\include, copy C:/jpeg-6b-4-lib/lib/jpeg.lib to C:\lib.
    set JPEG_INCLUDE_PATH to C:/include.
    set JPEG_LIBRARY to C:/lib/jpeg.lib.

    download binary jpeg-6b-4-bin.zip from http://gnuwin32.sourceforge.net/packages/jpeg.htm. Save the jpeg62.dll for runtime use.

  • libpng

    Download libpng-1.2.37-lib.zip from http://gnuwin32.sourceforge.net/packages/libpng.htm, click the zip link close to "Developer files".

    unzip libpng-1.2.37-lib.zip to C:\libpng-1.2.37-lib.
    open a Visual Studio 2008 Command Prompt, cd c:\tiff-3.8.2-1-lib
    Run this commands:
    lib.exe /machine:i386 /def:libpng12.def
    copy header files in C:/libpng-1.2.37-lib/include to C:\include, copy C:/libpng-1.2.37-lib/lib/libpng.lib to C:\lib.
    set PNG_INCLUDE_PATH to C:/include.
    set PNG_LIBRARY to C:/lib/libpng.lib.

    download binary libpng-1.2.37-bin.zip from http://gnuwin32.sourceforge.net/packages/libpng.htm. Save the libpng12.dll for runtime use.

  • zlib

    Download zlib-1.2.3-win32-vs2008.zip from ftp://ftp.hdfgroup.org/lib-external/zlib/1.2/bin/windows/.

    unzip zlib-1.2.3-win32-vs2008.zip to C:\zlib.
    copy header files in C:\zlib\include to C:\include, copy zlib1.lib and zlib1.dll from C:\zlib\dll to C:\lib.
    set ZLIB_LIBRARY to C:/lib/zlib1.lib.
  • szlib

    Download szip-2.1-win32-vs2008-enc.zip from ftp://ftp.hdfgroup.org/lib-external/szip/2.1/bin/windows/.

    unzip szip-2.1-win32-vs2008-enc.zip to C:\szip.
    copy header files in C:\szip\include to c:\include, copy C:\szip\lib\szlib.lib to C:\lib.
    set SZLIB_LIBRARY to C:/lib/szlib.lib.
  • OpenGL

    Download glext.h from http://oss.sgi.com/projects/ogl-sample/ABI/glext.h into C:/Program Files/Microsoft SDKs/Windows/v6.0A/Include/GL.

    set GLU_INCLUDE_PATH to C:/Program Files/Microsoft SDKs/Windows/v6.0A/Include.
    set GLU_LIBRARY to C:/Program Files/Microsoft SDKs/Windows/v6.0A/Lib/GlU32.Lib.
    set GL_INCLUDE_PATH to C:/Program Files/Microsoft SDKs/Windows/v6.0A/Include.
    set GL_LIBRARY to C:/Program Files/Microsoft SDKs/Windows/v6.0A/Lib/OpenGL32.Lib.

4. Actions before build:

  • In the Visual Studio 2005 menu, choose build -> configuration manager. Set the "Active Solution Configureation" to release. Then check the INSTALL and test in the check boxes.

  • right click the "Solution 'EMAN2'" inthe left "Solution Explorer" pane, then choose "Build Solution". If you see all 27 projects build succeeded. Then you got a successfull EMAN2 build.

5. Ignore specific library LIBC.lib

If you see this error message, follow the solution.

Problem: LINK : fatal error LNK1104: cannot open file 'LIBC.lib'
Solution: right click project -> Properties -> Linker -> Input -> Ignore Specific Library -> LIBC.lib

6. After compilation

  • change dll to pyd for all EMAN2 python extension libraries:
  • we need copy all the libpyxxx.dll file from EMAN2/bin directory to EMAN2/lib directory. And rename the dll extension to .pyd. Otherwise, we will get an error if we try to import EMAN2 in Python 2.5, "Import Error: no module named libpyxxx".
    ".dll is no longer supported as a filename extension for extension modules. .pyd is now the only filename extension that will searchfor".

7. runtime libraries for EMAN2 GUI program