LoginSignup
4
2

More than 3 years have passed since last update.

gRPCのインストール

Last updated at Posted at 2020-03-02

gRPCのビルド

CMAKEが通るようにgRPCをビルド・インストールします。
abseil-cppprotobuf 以外は apt でインストールしても行けそうですが
テストスクリプト と同じく openssl だけ apt でインストールしました。

$ sudo apt install -y \
    autoconf \
    build-essential \
    cmake \
    git \
    libtool \
    pkg-config

$ sudo apt install -y libssl-dev 

grpcソースの取得

$ git clone --recursive -b v1.27.3 https://github.com/grpc/grpc.git

abslのインストール

$ cd grpc/third_party/abseil-cpp
$ mkdir build
$ cd build
$ cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_POSITION_INDEPENDENT_CODE=TRUE ..
$ make -j 
$ sudo make install
$ sudo ldconfig

c-aresのインストール

$ cd grpc/third_party/cares/cares
$ mkdir build
$ cd build
$ cmake -DCMAKE_BUILD_TYPE=Release ..
$ make -j 
$ sudo make install
$ sudo ldconfig

zlibのインストール

$ cd grpc/third_party/zlib
$ mkdir build
$ cd build
$ cmake -DCMAKE_BUILD_TYPE=Release ..
$ make -j 
$ sudo make install
$ sudo ldconfig

protobufのインストール

$ cd grpc/third_party/protobuf/cmake
$ mkdir build
$ cd build
$ cmake -Dprotobuf_BUILD_TESTS=OFF -DBUILD_SHARED_LIBS=ON -DCMAKE_BUILD_TYPE=Release ..
$ make -j
$ sudo make install
$ sudo ldconfig

gRPCのインストール

$ cd grpc
$ mkdir build
$ cd build
$ cmake \
    -DCMAKE_BUILD_TYPE=Release \
    -DgRPC_INSTALL=ON \
    -DgRPC_BUILD_TESTS=OFF \
    -DgRPC_CARES_PROVIDER=package \
    -DgRPC_ABSL_PROVIDER=package \
    -DgRPC_PROTOBUF_PROVIDER=package \
    -DgRPC_SSL_PROVIDER=package \
    -DgRPC_ZLIB_PROVIDER=package \
    ..
$ make -j
$ sudo make install
$ sudo ldconfig

テスト

$ cd grpc/examples/cpp/helloworld
$ mkdir build
$ cd build
$ cmake ..
$ make -j

サーバ

$ cd grpc/examples/cpp/helloworld/build
$ ./greeter_server
Server listening on 0.0.0.0:50051

クライアント

$ cd grpc/examples/cpp/helloworld/build
$ ./greeter_client
Greeter received: Hello world

ライブラリだけ使うCmake

CMakeLists.txt
cmake_minimum_required(VERSION 3.5.1)

project(sample-grpc)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)

find_package(Threads)
find_package(Protobuf CONFIG REQUIRED)
find_package(gRPC CONFIG REQUIRED)

add_executable(sample-grpc-bin ${CMAKE_CURRENT_SOURCE_DIR}/main.cc)
target_link_libraries(sample-grpc-bin 
    Threads::Threads
    protobuf::libprotobuf
    gRPC::grpc++_unsecure)
set_target_properties(sample-grpc-bin PROPERTIES OUTPUT_NAME sample) 
4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2