Dependencies ============ grpc has few external dependencies. If needed, 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 grpc core currently depends on zlib and OpenSSL 1.0.2beta3, and also requires libevent2 for the Linux port. grpc++'s tests depends on protobuf 3.0.0, gtests and gflags. OpenSSL ------- Secure HTTP2 requires to have 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.2beta3 is the first version of OpenSSL that has ALPN support, and this explains our dependency on it. Compiling ========= Currently, you will need to manually install OpenSSL-1.0.2beta3 prior attempting to compile grpc. To avoid clobbering any system OpenSSL, it is preferable to install it in a separate directory. Running binaries however will require the appropriate LD_LIBRARY_PATH variable set up, as shown later. To compile OpenSSL 1.0.2beta3: $ cd third_party/openssl $ ./config --prefix=/usr/local/openssl-alpn --shared $ make $ sudo make install $ cd ../../ After that step, you can compile grpc: $ ssl=/usr/local/openssl-alpn $ CPPFLAGS=-I$ssl/include LDFLAGS=-L$ssl/lib make This will compile both grpc and grpc++. Testing ======= At the moment, C++ tests aren't fully available yet. If you want to run tests on the C core of grpc, you can do the following: $ CPPFLAGS=-I$ssl/include LDFLAGS=-L$ssl/lib make buildtests_c $ LD_LIBRARY_PATH=$ssl/lib make test_c Installing ========== Once everything is compiled, you should be able to install grpc and grpc++ libraries and headers: $ sudo make install