First make sure your system meets ThriftRequirements
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:
Once the configure scripts are generated, thrift can be configured. From the top directory, do:
(if getting errors using Ubuntu, check out the workarounds)
You may need to specify the location of the boost files explicitly. If you installed boost in /usr/local, you would run configure as follows:
If you want to override the logic of the detection of the Java SDK, use the JAVAC environment variable:
Note that by default the thrift C++ library is typically built with debugging symbols included. If you want to customize these options you should use the CXXFLAGS option in configure, as such:
./configure CXXFLAGS='-g -O2' ./configure CFLAGS='-g -O2' ./configure CPPFLAGS='-DDEBUG_MY_FEATURE'
Run ./configure --help to see other configuration options
Please be aware that the Python library will ignore the --prefix option and just install wherever Python's distutils puts it (usually along the lines of /usr/lib/pythonX.Y/site-packages/). If you need to control where the Python modules are installed, set the PY_PREFIX variable. (DESTDIR is respected for Python and C++.)
Issues while compiling
If you get the error ./thrift-20080411p1/compiler/cpp/thriftl.cc:2190: undefined reference to `yywrap' you need to install the flex library (See also ThriftRequirements) and re-run the configuration script.
If you get the error mv: cannot stat `.deps/TBinaryProtocol.Tpo': No such file or directory while building the Thrift Runtime Library:
Re-reun configure with --enable-libtool-lock, or
Turn off parallel make using make -j 1 or placing .NOTPARALLEL: in lib/cpp/Makefile.
Although the thrift compiler build appears to be compatible with parallel make without libtool lock, the thrift runtime build is not. (Thrift 0.2.0, Cygwin/Windows XP)
From the top directory, become superuser and do:
Note that 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.
Java can be built in two ways. The default is to use Ivy.
When the Java build begins, ant will automatically download Apache Ivy into the build directory. Ivy will then be used to download Thrift's other dependencies.
If you don't have Internet access, you can cd into lib/java and run "ant -Dnoivy=" (without quotes). You will have to manually include Thrift's dependencies (except for Ivy) in your CLASSPATH.