Wiki Page Content

You are not allowed to revert this page!

Revision 11 as of 2010-06-18 17:22:46

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.1.2-dll.zip from http://www.fftw.org/install/windows.html.

    unzip fftw-3.1.2-dll.zip.
    open a Visual Studio 2005 Command Prompt, cd c:\fftw-3.1.2-dll.

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

    lib /machine:i386 /def:libfftw3-3.def
    lib /machine:i386 /def:libfftw3f-3.def
    lib /machine:i386 /def:libfftw3l-3.def 

    Download fftw-3.1.2 source code fftw-3.1.2.tar.gz from http://www.fftw.org/download.html.

    unzip and untar fftw-3.1.2.tar.gz in a temporary directory, copy the include directory to C:\fftw-3.1.2
    set FFTW3_INCLUDE_PATH to C:/fftw-3.1.2/include.
    set FFTW3_LIBRARY to C:/fftw-3.1.2/libfftw3f-3.lib
  • GSL

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

    unzip gsl-1.11-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.
    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.
  • 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.
    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.
  • libpng

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

    unzip libpng-1.2.24.lib.zip to C:\libpng-1.2.24.lib.
    copy header files in C:/libpng-1.2.24.lib/include to C:\include, copy C:/libpng-1.2.24.lib/lib/libpng.lib to C:\lib.
    set PNG_INCLUDE_PATH to C:/include.
    set PNG_LIBRARY to C:/lib/libpng.lib.
  • zlib

    Download zlib123-vs2005.zip from ftp://ftp.hdfgroup.org/lib-external/zlib/1.2/bin/windows/.

    unzip zlib123-vs2005.zip to C:\zlib123-vs2005.
    copy header files in C:\zlib123-vs2005\include to C:\include, copy zlib1.lib and zlib1.dll from C:\zlib123-vs2005\dll to C:\lib.
    set ZLIB_LIBRARY to C:/lib/zlib1.lib.

    if you get compilation errors complain about <unistd.h> can not be found, change line 287 of zconf.h to "#if 0"

  • szlib

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

    unzip szip21-vs2005-enc.zip to C:\szip21-vs2005-enc.
    copy header files in C:\szip21-vs2005-enc\include to c:\include, copy C:\szip21-vs2005-enc\lib\szlib.lib to C:\lib.
    set SZLIB_LIBRARY to C:\lib\szlib.lib.
  • OpenGL

    set GLU_INCLUDE_PATH to C:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/Include.
    set GLU_LIBRARY to C:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/Lib/GlU32.Lib.
    set GL_INCLUDE_PATH to C:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/Include.
    set GL_LIBRARY to C:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/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