ThriftInstallationWin32

The following instructions are for making the thrift compiler only. The Thrift C++ runtime library does not currently work on Windows. This means that you'll be able to compile ThriftIDL files to C++/Java/Python/etc., but you won't be able to compile and run the generated C++ code under Windows.

Basic requirements for win32

Thrift's compiler is written in C++ and designed to be portable, but there are some system requirements:

Installation steps (Cygwin dependency)

If you are building from the first time out of the source repository, you will need to generate the configure scripts. (This is not necessary if you downloaded a tarball.) From the top directory, do:

        ./bootstrap.sh

Once the configure scripts are generated, thrift can be configured. From the top directory, do:

        ./configure

Now make the thrift compiler:

        cd compiler/cpp
        make

(You won't be able to make from the root Thrift directory--If you try to make from that directory, you'll get compile errors about PTHREAD_MUTEX_RECURSIVE_NP undeclared. Making from compiler/cpp creates the Thrift compiler, while making from the root Thrift directory creates, among other things, the Thrift C++ runtime libraries, which are known not to compile under Cygwin/Windows.)

Some language packages must be installed manually using build tools better suited to those languages (at the time of this writing, this applies to Java, Ruby, PHP).

Look for the README file in the lib/<language>/ folder for more details on the installation of each language library package.

Possible issues with Cygwin install

Syntax error in ./configure

The following error occurs for some users when running ./configure:

./configure: line 21183: syntax error near unexpected token `MONO,'
./configure: line 21183: `  PKG_CHECK_MODULES(MONO, mono >= 1.2.6, have_mono=yes, have_mono=no)'

To resolve this, you'll need to find your pkg.m4 file and copy it to the thrift/aclocal directory. From the top-level thrift directory, you can copy the file by running

        cp /usr/share/aclocal/pkg.m4 aclocal

Finally, re-run ./bootstrap.sh and ./configure. (Note that pkg.m4 is created by the pkg-config tool. If your /usr/share/aclocal directory doesn't contain the pkg.m4 file, you may not have pkg-config installed.)

Installation steps(No Cygwin dependency)

To compile the Thrift generator without the cygwin.dll dependency you need to install MinGW (www.mingw.org). In addition you need to add the following entry to your windows PATH variable.

       C:\MINGW\BIN

Next, open compiler/cpp/Makefile.am and add the following line to thrift_CXXFLAGS

-DMINGW -mno-cygwin -lfl

Run bootstrap.sh:

 ./bootstrap.sh

Make sure you have java in your $PATH variable, if not do(adjust path if necessary):

 export PATH=$PATH:"/cygdrive/c/program files/java/jre1.6.0_05/bin"

Run configure

 ./configure

Run make

   cd compiler/cpp
   mingw32-make.exe

Possible issues with MinGW install

yywrap is not found

Make sure you add -lfl in your cxxflags in Makefile, also try adding -[Lc]/cygwin/libs

boost is not found

Try and change the include dir to use the windows path from c like this: Edit compiler/cpp/Makefile, look for the declaration of BOOST_CPPFLAGS, change that line for

BOOST_CPPFLAGS = -Ic:/cygwin/usr/include/boost-1_33_1
realpath is not found

add -DMINGW -mno-cygwin to the CXXDEFS variable in Makefile

last edited 2008-06-30 23:49:44 by JustinLebar