Créez un environnement pour Protobuf (3.6.1) et gRPC (v1.18.0) sur Ubuntu 18.04.
Il existe une dépendance de version entre Protobuf et gRPC.
Dans l'environnement de développement, le dernier Protobuf (3.13.0) ne peut pas être utilisé, utilisez donc le Protobuf (3.6.1) pris en charge. De plus, comme le dernier gRPC (1.32.0) ne peut pas être compilé avec l'ancien Protobuf (3.6.1), utilisez gRPC (v1.18.0) en utilisant Protobuf (3.6.1).
référence: Introduction à la nouvelle technologie "gRPC" pour la communication entre les services
Vous pouvez également installer protobuf à partir du référentiel protobuf et du dossier gRPC third_party / protobuf.
Si vous l'avez déjà installé avec apt-get, désinstallez-le. (Le protobuf d'apt-get est 3.0.0)
sudo apt-get remove protobuf-compiler
sudo apt-get remove libprotobuf-dev
sudo apt-get remove libprotobuf-lite10
--Installation de protobuf 3.6.1.
sudo apt-get install autoconf automake libtool curl make g++ unzip
git clone -b 3.6.x https://github.com/protocolbuffers/protobuf.git
cd protobuf
git submodule update --init --recursive
./autogen.sh
./configure
make
make check
sudo make install
sudo ldconfig # refresh shared library cache.
--Vérifiez la version de protobuf
$ protoc --version
libprotoc 3.6.1
$ which protoc
/usr/local/bin/protoc
Installez dans $ HOME / .local.
--Réglage de MY_INSTALL_DIR
$ export MY_INSTALL_DIR=$HOME/.local
$ mkdir -p $MY_INSTALL_DIR
$ export PATH="$PATH:$MY_INSTALL_DIR/bin"
Ajouter PATH à ~ / .bashrc
export PATH=$PATH:$HOME/.local/bin
--Installation de cmake
$ sudo apt-get install cmake
$ cmake --version
cmake version 3.10.2
Vous avez besoin de la version 3.13 ou ultérieure de cmake, alors installez un nouveau cmake.
$ wget -q -O cmake-linux.sh https://github.com/Kitware/CMake/releases/download/v3.17.0/cmake-3.17.0-Linux-x86_64.sh
$ sh cmake-linux.sh -- --skip-license --prefix=$MY_INSTALL_DIR
$ rm cmake-linux.sh
--Installation des pré-requis
$ sudo apt-get install build-essential autoconf libtool pkg-config libssl-dev
$ git clone --recurse-submodules -b v1.18.0 https://github.com/grpc/grpc
$ cd grpc
cd third_party/cares/cares
git fetch origin
git checkout cares-1_13_0
mkdir -p cmake/build
cd cmake/build
cmake -DCMAKE_BUILD_TYPE=Release ../..
sudo make -j4 install
rm -rf third_party/cares/cares # wipe out to prevent influencing the grpc build
cd third_party/zlib
mkdir -p cmake/build
cd cmake/build
cmake -DCMAKE_BUILD_TYPE=Release ../..
sudo make -j4 install
rm -rf third_party/zlib # wipe out to prevent influencing the grpc build
Non requis si déjà installé à partir du référentiel protobuf. Il est possible de réinstaller à partir de third_party / protobuf.
cd third_party/protobuf
mkdir -p cmake/build
cd cmake/build
cmake -Dprotobuf_BUILD_TESTS=OFF -DCMAKE_BUILD_TYPE=Release ..
sudo make -j4 install
rm -rf third_party/protobuf # wipe out to prevent influencing the grpc build
cd grpc
mkdir -p cmake/build
cd cmake/build
cmake \
-DCMAKE_BUILD_TYPE=Release \
-DgRPC_INSTALL=ON \
-DgRPC_BUILD_TESTS=OFF \
-DgRPC_CARES_PROVIDER=package \
-DgRPC_PROTOBUF_PROVIDER=package \
-DgRPC_SSL_PROVIDER=package \
-DgRPC_ZLIB_PROVIDER=package \
-DCMAKE_INSTALL_PREFIX=$MY_INSTALL_DIR \
../..
make -j4 install
$ protoc --version
libprotoc 3.6.1
$ which protoc
/usr/local/bin/protoc
$ cd examples/cpp/helloworld
$ mkdir -p cmake/build
$ cd cmake/build
$ cmake ../..
$ make -j
$ ./greeter_server
# From a different terminal
$ ./greeter_client
Greeter received: Hello world
$ protoc \
--grpc_out=./codegen \
--cpp_out=./codegen \
--plugin=protoc-gen-grpc=`which grpc_cpp_plugin` \
./telemetry.proto
$ cd codegen
$ ls
telemetry.grpc.pb.cc telemetry.grpc.pb.h telemetry.pb.cc telemetry.pb.h
Recommended Posts