|
|
|
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
|
|
|
|
|
|
|
|
If you want to run the tests using one of the sanitized configurations, you
|
|
|
|
will need clang and its instrumented libc++:
|
|
|
|
|
|
|
|
# apt-get install clang libc++-dev
|
|
|
|
|
|
|
|
|
|
|
|
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
|