Differences between revisions 1 and 4 (spanning 3 versions)
Revision 1 as of 2010-06-16 16:32:21
Size: 8395
Editor: gtang
Comment:
Revision 4 as of 2010-06-16 19:03:48
Size: 8538
Editor: gtang
Comment:
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
= Compiling EMAN2 on Windows =

1. Use cmake to generate
Visual Studio 2005 solution:'''
 * Download cmake windows installer cmake-2.6.0-win32-x86.exe from http://www.cmake.org/HTML/index.html.
 * run cmake, 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.

'''3. The major trou
ble of compiling EMAN2 on Visual Studio 2005 come from the dependent library: '''
= Compiling EMAN2 on Windows 7 with Visual C++ 2008 (9.0sp1) =
'''
 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, 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 li
braries:
'''
Line 12: Line 14:
  :: Download python.2.5.2.msi from http://www.python.org, run it to install.
  :: set PYTHON_INLCUDE_PATH to C:/Python25/include
  :: set PYTHON_LIBRARY to C:/Python25/libs/python25.lib
  :: Download python-2.6.5.msi from http://www.python.org, run it to install.
  :: In cmake, set PYTHON_INLCUDE_PATH to C:/Python25/include
  :: In cmake, set PYTHON_LIBRARY to C:/Python25/libs/python25.lib
Line 16: Line 18:
  :: Download numpy-1.1.0-win32-superpack-python2.5.exe from http://numpy.scipy.org, run it to install.
  :: set NUMPY_INCLUDE_PATH to C:/Python25/Lib/site-packages/numpy/core/include
  :: 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
Line 19: Line 21:
  :: Download boost_1_35_0.zip and boost-jam-3.1.16-1-ntx86.zip from http://www.boost.org/users/download/.
  :: unzip boost-jam-3.1.16-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_35_0.zip.
  :: open a Visual Studio 2005 Command Prompt, cd C:\boost_1_35_0\libs\python\build\
  :: bjam -sTOOLS=msvc "-sBUILD=release <runtime-link>dynamic <optimization>speed"
  :: set the BOOST_INCLUDE_PATH to C:/boost_1_35_0/include
  :: set the BOOST_LIBRARY to C:/boost_1_35_0/bin.v2/libs/python/build/msvc-8.0/release/threading-multi/boost_python-vc80-mt-1_35.lib
  :: 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 booststrap.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_35_0/bin.v2/libs/python/build/msvc-9.0/release/threading-multi/boost_python-vc90-mt-1_43.lib
  :: If you got compilation error, "error LNK1104: cannot open file 'boost_python-vc90-mt-1_43.lib'", then you need build boost.python library as shared library.
Line 27: Line 31:
  :: Download 5-181-win-vs2005.zip from ftp://ftp.hdfgroup.org/HDF5/current/bin/windows/.
  :: unzip 5-181-win-vs2005.zip, get a folder 5-181-win-vs2005.
  :: set the HDF5_INCLUDE_PATH to C:/5-181-win-vs2005/include.
  :: set the HDF5_LIBRARY to C:/5-181-win-vs2005/dll/hdf5dll.lib.
  :: 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.
Line 32: Line 36:
  :: 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:
  :: 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 command:
Line 37: Line 41:
lib /machine:i386 /def:libfftw3-3.def
Line 39: Line 42:
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.
 }}}
  :: this create library libfftw3f-3.lib
  :: set FFTW3_INCLUDE_PATH to c:/fftw-3.2.2.pl1-dll32.
Line 45: Line 47:
  :: Download gsl-1.11-windows-binaries.zip from http://david.geldreich.free.fr/dev.html   :: Download gsl-1.13-windows-binaries.zip from http://david.geldreich.free.fr/dev.html
Line 70: Line 72:
  :: 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.
  :: 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:\zlib123-vs2005\dll to C:\lib.
Line 74: Line 76:
  :: if you get compilation errors complain about <unistd.h> can not be found, change line 287 of zconf.h to "#if 0"
Line 76: Line 77:
  :: 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.
  :: 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.
Line 81: Line 82:
  :: 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.
  :: Download glext.h from http://oss.sgi.com/projects/ogl-sample/ABI/glext.h.
:: 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.
Line 86: Line 88:
'''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.
'''3. Actions before build:'''
 * 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.
Line 90: Line 92:
'''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'''
'''4. Runtime libraries:'''
 * copying the following runtime libraries into EMAN2/lib directory:
 :: boost_python-vc90-mt-1_43.dll
 :: hdf5.dll
 :: libfftw3f-3.dll
 :: szip.dll
 :: zlib1.dll
 :: jpeg62.dll, and copy it as jpeg.dll
 :: libtiff3.dll, rename it to libtiff.dll
 :: libpng12.dll

'''5. Runtime dependents for EMAN2 GUI program'''
Line 102: Line 105:
  :: Download ipython-0.8.4.win32-setup.exe from http://ipython.scipy.org/dist/. Click and install.   :: Download ipython-0.10.win32-setup.exe from http://ipython.scipy.org/dist/. Click and install.
Line 105: Line 108:
  :: To install PyOpenGL, we need install setuptools first. Download setuptools-0.6c8.win32-py2.5.exe from http://pypi.python.org/pypi/setuptools#downloads. Click and install.
  :: Download PyOpenGL-3.0.0b2.zip from http://sourceforge.net/projects/pyopengl
  :: unzip PyOpenGL-3.0.0b2.zip to C:\PyOpenGL-3.0.0b2.
  :: Open a console window, cd C:\PyOpenGL-3.0.0b2, then type "python setup.py install".
 * '''''glut dynamic library'''''
  :: download glut-3.7.6-bin.zip from http://www.xmission.com/~nate/glut.html.
  :: unzip glut-3.7.6-bin.zip to C:\glut-3.7.6-bin.
  :: copy C:\glut-3.7.6-bin\glut32.dll to C:\EMAN2\lib directory.
  :: To install PyOpenGL, we need install setuptools first. Download setuptools-0.6c11.win32-py2.6.exe from http://pypi.python.org/pypi/setuptools#downloads. Click and install.
  :: Download PyOpenGL-3.0.1.zip from http://sourceforge.net/projects/pyopengl
  :: unzip PyOpenGL-3.0.1.zip to C:\PyOpenGL-3.0.1.
  :: Open a console window, cd C:\PyOpenGL-3.0.1, then type "python setup.py install".
Line 114: Line 113:
  :: Download PyQt-Py2.5-gpl-4.4.2-1.exe from http://www.riverbankcomputing.com/software/pyqt/download. Click and install.
  :: After everything installed, type e2.py, if you see error message like, "The procedure entry point _Z7qstrcmpRK10QByteArrayS1_ could not be located in the dynamic link library QtCore4.dll.". That means you may have other Qt4 libraries installed. Remove them, just use the Qt4 libraries come with PyQt4 will solve this problem.
 
  :: Download PyQt-Py2.6-gpl-4.7.3-2.exe from http://www.riverbankcomputing.com/software/pyqt/download. Click and install.
 * '''''matplotlib'''''
  :: Download matplotlib-0.99.3.win32-py2.6.exe from http://matplotlib.sourceforge.net/, click and install.
 * '''''ipython'''''
  :: Download ipython-0.10.win32-setup.exe from http://ipython.scipy.org/, click and install.

'''6. Set up Environmental variables'''
 * Set up following environmental variables:
 :: Set EM
AN2DIR to C:\EMAN2
 :: Set PATH to C:\EMAN2\bin;C:\EMAN2\lib
 :: Set PYTHONPATH to C:\EMAN2\lib

'''7. Test if EMAN2 works'''
 * A
fter everything installed, type e2.py,
 :: I
f you see error message like, "The procedure entry point _Z7qstrcmpRK10QByteArrayS1_ could not be located in the dynamic link library QtCore4.dll.". That means you may have other Qt4 libraries installed. Remove them, just use the Qt4 libraries come with PyQt4 will solve this problem.
 :: If you see error message like, "ImportError: DLL load failed: The specified module could not be found.". That means some dependent runtime libraries for libpy***.pyd are missing. Find what's missing and copy it into EMAN2/lib directory.
 * in the e2.py prompt, try following command:
 :: img = test_image()
 :: display(img)
 :: img = test_image_3d()
 :: display(img)

Compiling EMAN2 on Windows 7 with Visual C++ 2008 (9.0sp1)

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

  1. Install and configure the dependent libraries:

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

    In cmake, set PYTHON_INLCUDE_PATH to C:/Python25/include
    In cmake, set PYTHON_LIBRARY to C:/Python25/libs/python25.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 booststrap.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_35_0/bin.v2/libs/python/build/msvc-9.0/release/threading-multi/boost_python-vc90-mt-1_43.lib
    If you got compilation error, "error LNK1104: cannot open file 'boost_python-vc90-mt-1_43.lib'", then you need build boost.python library as shared library.
  • 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 command:

    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
  • GSL

    Download gsl-1.13-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 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:\zlib123-vs2005\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.

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

4. Runtime libraries:

  • copying the following runtime libraries into EMAN2/lib directory:
  • boost_python-vc90-mt-1_43.dll
    hdf5.dll
    libfftw3f-3.dll
    szip.dll
    zlib1.dll
    jpeg62.dll, and copy it as jpeg.dll
    libtiff3.dll, rename it to libtiff.dll
    libpng12.dll

5. Runtime dependents for EMAN2 GUI program

6. Set up Environmental variables

  • Set up following environmental variables:
  • Set EMAN2DIR to C:\EMAN2
    Set PATH to C:\EMAN2\bin;C:\EMAN2\lib
    Set PYTHONPATH to C:\EMAN2\lib

7. Test if EMAN2 works

  • After everything installed, type e2.py,
  • If you see error message like, "The procedure entry point _Z7qstrcmpRK10QByteArrayS1_ could not be located in the dynamic link library QtCore4.dll.". That means you may have other Qt4 libraries installed. Remove them, just use the Qt4 libraries come with PyQt4 will solve this problem.

    If you see error message like, "ImportError: DLL load failed: The specified module could not be found.". That means some dependent runtime libraries for libpy***.pyd are missing. Find what's missing and copy it into EMAN2/lib directory.

  • in the e2.py prompt, try following command:
  • img = test_image()
    display(img)
    img = test_image_3d()
    display(img)

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