|
|
|
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
|
|
|
|
|
|
|
|
Note that the Makefile makes it much easier for you to compile from sources
|
|
|
|
if you were to clone recursively our git repository.
|
|
|
|
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
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, it is recommended
|
|
|
|
to encrypt your network traffic, therefore we urge you to not use the unsecure
|
|
|
|
version of grpc if possible.
|
|
|
|
|
|
|
|
|
|
|
|
Compiling
|
|
|
|
=========
|
|
|
|
|
|
|
|
If you have all the dependencies in the third_party subfolder, you should
|
|
|
|
simply be able to go ahead and run "make" to compile grpc. The other targets
|
|
|
|
that you might find interesting are "buildtests" and "test".
|
|
|
|
|
|
|
|
If you didn't clone from git, and thus are unable to get the required
|
|
|
|
dependencies, you can manually download and unpack the necessary packages,
|
|
|
|
and let the Makefile build them itself.
|
|
|
|
|
|
|
|
You may also install the dependencies yourself, from the sources, or from
|
|
|
|
your distribution's package manager.
|
|
|
|
|
|
|
|
The development packages needed for grpc are libevent2 under Linux, and zlib.
|
|
|
|
The development packages needed for grpc++'s tests are gtests, and gflags.
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
The recommended version of OpenSSL that provides ALPN support is available
|
|
|
|
at this URL:
|
|
|
|
|
|
|
|
https://www.openssl.org/source/openssl-1.0.2-beta3.tar.gz
|
|
|
|
|
|
|
|
If you want to let the Makefile build them automatically for you, please
|
|
|
|
extract them in the third_party folder. You will need to rename the extracted
|
|
|
|
folder the following way:
|
|
|
|
|
|
|
|
openssl-1.0.2-beta3 --> openssl
|
|
|
|
|
|
|
|
|
|
|
|
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:
|
|
|
|
|
|
|
|
$ make buildtests_c
|
|
|
|
$ make test_c
|
|
|
|
|
|
|
|
|
|
|
|
Installing
|
|
|
|
==========
|
|
|
|
|
|
|
|
Once everything is compiled, you should be able to install grpc and grpc++
|
|
|
|
libraries and headers:
|
|
|
|
|
|
|
|
$ sudo make install
|