Differences between revisions 2 and 20 (spanning 18 versions)
Revision 2 as of 2010-06-16 17:15:46
Size: 7422
Editor: gtang
Comment:
Revision 20 as of 2010-06-18 20:07:07
Size: 9130
Editor: gtang
Comment:
Deletions are marked like this. Additions are marked like this.
Line 2: Line 2:
'''
 
1. Use cmake to generate Visual Studio 2008 solution:
'''

'''1. Use cmake to generate Visual Studio 2008 solution:'''
Line 6: Line 5:
 * run cmake, choose generation solution for visual 2008, fill the EMAN2 source directory to "Where is the source code", and specify a directory to "Where to build the binaries".
 * Specify the CMAKE_CONFIGURATION_TYPES to release.
 * click configure button, then click OK. You will get error dialog. Then follow the next item to solve all dependency libraries.
'''
 2. Install and configure the dependent libraries:
'''
 * 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: '''
Line 15: Line 13:
  :: In cmake, set PYTHON_INLCUDE_PATH to C:/Python25/include
  :: In cmake, set PYTHON_LIBRARY to C:/Python25/libs/python25.lib
  :: set PYTHON_INLCUDE_PATH to C:/Python26/include
  :: set PYTHON_LIBRARY to C:/Python26/libs/python26.lib
Line 25: Line 23:
  :: run booststrap.bat   :: run bootstrap.bat
Line 28: Line 26:
  :: set the BOOST_LIBRARY to C:/boost_1_35_0/bin.v2/libs/python/build/msvc-9.0/release/threading-multi/boost_python-vc90-mt-1_43.lib   :: 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
Line 38: Line 36:
  :: follow the instruction from http://www.fftw.org/install/windows.html, run command:   :: follow the instruction from http://www.fftw.org/install/windows.html, run these commands:
Line 40: Line 38:
lib /machine:i386 /def:libfftw3f-3.def
 }}}
  :: this create library libfftw3f-3.lib

  :: set FFTW3_INCLUDE_PATH to c:/fftw-3.2.2.pl1-dll32.
  :: set FFTW3_LIBRARY to C:/fftw-3.1.2/libfftw3f-3.lib
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
Line 47: Line 44:
  :: unzip gsl-1.11-windows-binaries.zip to C:\gsl.   :: unzip gsl-1.13-windows-binaries.zip to C:\gsl.
Line 55: Line 52:
  :: 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
}}}
Line 58: Line 60:
  :: download binary tiff-3.8.2-1-bin.zip from http://gnuwin32.sourceforge.net/packages/tiff.htm. Save the libtiff3.dll for runtime use.
Line 61: Line 64:
  :: 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
}}}
Line 64: Line 72:
  :: download binary jpeg-6b-4-bin.zip from http://gnuwin32.sourceforge.net/packages/jpeg.htm. Save the jpeg62.dll for runtime use.
Line 65: Line 74:
  :: 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.
  :: 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.
Line 70: Line 84:
  :: download binary libpng-1.2.37-bin.zip from http://gnuwin32.sourceforge.net/packages/libpng.htm. Save the libpng12.dll for runtime use.
Line 73: Line 88:
  :: copy header files in C:\zlib\include to C:\include, copy zlib1.lib and zlib1.dll from C:\zlib123-vs2005\dll to C:\lib.   :: copy header files in C:\zlib\include to C:\include, copy zlib1.lib and zlib1.dll from C:\zlib\dll to C:\lib.
Line 79: Line 94:
  :: set SZLIB_LIBRARY to C:\lib\szlib.lib.   :: set SZLIB_LIBRARY to C:/lib/szlib.lib.
Line 81: Line 96:
  :: Download glext.h from http://oss.sgi.com/projects/ogl-sample/ABI/glext.h.   :: 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.
Line 88: Line 103:
 * In the Visual Studio 2008 menu, choose build -> configuration manager. Set the "Active Solution Configureation" to release if it's not. Then check the INSTALL and test in the check boxes.
 * right click the "Solution 'EMAN2'" in the left "Solution Explorer" pane, then choose "Build Solution". If you see all 27 projects build succeeded. Then you got a successfull EMAN2 build.
 * In cmake configuration page, you need change the CMAKE_CONFIGURATION_TYPES to Release.
 * If you did not configure the build type to Release in cmake.
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.
Line 91: Line 107:
'''4. runtime libraries for EMAN2 GUI program''' '''4. 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'''

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.

3. Actions before build:

  • In cmake configuration page, you need change the CMAKE_CONFIGURATION_TYPES to Release.
  • If you did not configure the build type to Release in cmake. 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.

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

COMPILE_EMAN2_VS2008 (last edited 2012-08-13 19:52:54 by gtang)