These instructions only cover building grpc C and C++ libraries under typical unix systems. If you need more information, please try grpc's wiki pages: https://github.com/google/grpc/wiki ************************* * If you are in a hurry * ************************* A typical unix installation won't require any more steps than running: $ make # make install You don't need anything else than GNU Make, gcc and autotools. Under a Debian or Ubuntu system, this should boil down to the following packages: # apt-get install build-essential autoconf libtool Building the python wrapper requires the following: # apt-get install python-all-dev python-virtualenv ******************************* * More detailled instructions * ******************************* Setting up dependencies ======================= Dependencies to compile the libraries ------------------------------------- grpc libraries have few external dependencies. If you need to compile and install them, they are present in the third_party directory if you have cloned the github repository recursively. If you didn't clone recursively, you can still get them later by running the following command: $ git submodule update --init Note that the Makefile makes it much easier for you to compile from sources if you were to clone recursively our git repository: it will automatically compile zlib and OpenSSL, which are core requirements for grpc. Note this creates grpc libraries that will have zlib and OpenSSL built-in inside of them, which significantly increases the libraries' size. In order to decrease that size, you can manually install zlib and OpenSSL on your system, so that the Makefile can use them instead. Under a Debian or Ubuntu system, one can acquire the development package for zlib this way: # apt-get install zlib1g-dev To the best of our knowledge, no distribution has an OpenSSL package that supports ALPN yet, so you would still have to depend on installing from source for that particular dependency if you want to reduce the libraries' size. The recommended version of OpenSSL that provides ALPN support is available at this URL: https://www.openssl.org/source/openssl-1.0.2.tar.gz Dependencies to compile and run the tests ----------------------------------------- Compiling and running grpc plain-C tests dont't require any more dependency. Compiling and running grpc C++ tests depend on protobuf 3.0.0, gtest and gflags. Although gflags is provided in third_party, you will need to manually install that dependency on your system to run these tests. Under a Debian or Ubuntu system, you can install the gtests and gflags packages using apt-get: # apt-get install libgflags-dev libgtest-dev However, protobuf 3.0.0 isn't in a debian package yet, but the Makefile will automatically try and compile the one present in third_party if you cloned the repository recursively, and that it detects your system is lacking it. Compiling and installing protobuf 3.0.0 requires a few more dependencies in itself, notably the autoconf suite. If you have apt-get, you can install these dependencies this way: # apt-get install autoconf libtool A word on OpenSSL ----------------- Secure HTTP2 requires the TLS extension ALPN (see rfc 7301 and http://http2.github.io/http2-spec/ section 3.3). Our HTTP2 implementation relies on OpenSSL's implementation. OpenSSL 1.0.2 is the first released version of OpenSSL that has ALPN support, and this explains our dependency on it. Note that the Makefile supports compiling only the unsecure elements of grpc, and if you do not have OpenSSL and do not want it, you can still proceed with installing only the elements you require. However, we strongly recommend the use of encryption for all network traffic, and discourage the use of grpc without TLS. Compiling ========= If you have all the dependencies mentioned above, you should simply be able to go ahead and run "make" to compile grpc's C and C++ libraries: $ make Testing ======= To build and run the tests, you can run the command: $ make test If you want to be able to run them in parallel, and get better output, you can also use the python tool we have written: $ ./tools/run_tests/run_tests.py Installing ========== Once everything is compiled, you should be able to install grpc C and C++ libraries and headers: # make install