| 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 --init update |
| |
| |
| 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 |
| |
| |
| 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 |