| 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 and gcc. Under a Debian or |
| Ubuntu system, this should boil down to the following package: |
| |
| # apt-get install build-essential 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 and protobuf are provided in third_party, you will |
| need to manually install these dependencies 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: you'll need to compile |
| and install it from the sources in the third_party. Note that if you already |
| have the protobuf and protoc packages installed on your system, they will most |
| likely interfere, and you'll need to uninstall them first. |
| |
| Compiling and installing protobuf 3.0.0 requires a few more dependencies in |
| itself, notably the autoconf suite, curl, and unzip. If you have apt-get, you |
| can install these dependencies this way: |
| |
| # apt-get install unzip curl autoconf libtool |
| |
| Then, you can build and install protobuf 3.0.0: |
| |
| $ cd third_party/protobuf |
| $ ./autogen.sh |
| $ ./configure |
| $ make |
| # make install |
| # ldconfig |
| |
| |
| A word on 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.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, 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 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 |