Compiling EMAN2 on Windows
1. Use cmake to generate Visual Studio 2005 solution: 3. The major trouble of compiling EMAN2 on Visual Studio 2005 come from the dependent library: - Note: I suppose all packages are installed on C: drive. You can adjust it according to your actual path.
Python 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
Numpy 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
Boost.python 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
HDF5 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.
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: 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 IPython Download ipython-0.8.4.win32-setup.exe from http://ipython.scipy.org/dist/. Click and install.
Download pyreadline-1.5-win32-setup.exe from http://ipython.scipy.org/dist/. Click and install. This package is for proper color support in IPython shell.
PyOpenGL 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.
PyQt4 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.