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