diff options
Diffstat (limited to 'INSTALL')
-rw-r--r-- | INSTALL | 149 |
1 files changed, 104 insertions, 45 deletions
@@ -1,83 +1,142 @@ -Dependencies -============ +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: -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: + https://github.com/google/grpc/wiki -$ 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. +************************* +* If you are in a hurry * +************************* +A typical unix installation won't require any more steps than running: -grpc core currently depends on zlib and OpenSSL 1.0.2beta3. + $ make + # make install -grpc++'s tests depends on protobuf 3.0.0, gtests and gflags. +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: -OpenSSL -------- + # apt-get install build-essential -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. +******************************* +* More detailled instructions * +******************************* +Setting up dependencies +======================= -Compiling -========= +Dependencies to compile the libraries +------------------------------------- -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". +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: -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. + $ git submodule update --init -You may also install the dependencies yourself, from the sources, or from -your distribution's package manager. +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: -The only development package needed for grpc is zlib. -The development packages needed for grpc++'s tests are gtests, and gflags. + # 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. +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-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 +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 autotools-dev + +Then, you can build and install protobuf 3.0.0: + + $ cd third_party/protobuf + $ ./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.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 mentioned above, you should simply be able +to go ahead and run "make" to compile grpc's C and C++ libraries: + + $ make 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: +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: -$ make buildtests_c -$ make test_c + $ ./tools/run_tests/run_tests.py Installing ========== -Once everything is compiled, you should be able to install grpc and grpc++ +Once everything is compiled, you should be able to install grpc C and C++ libraries and headers: -$ sudo make install + # make install |