Centos grpc C++ 源码编译

正题

我用的Centos 7 系统,选择的 grpc 1.29.1 版本

前期准备

git、cmake、make、gcc等,一定要安装

下载源码  (github下载大概一个小时吧)

(2022.8.5 https://hub.xn--gzu630h.xn--kpry57d 镜像仓库可能挂了,看看其他的仓库吧,GitClone - Use cache to speed up clone from github and Provide services for developers)(或者kgithub.com )

git clone -b v1.29.1 https://hub.xn--gzu630h.xn--kpry57d/grpc/grpc.git

修改 .submodule 文件 (github下载很容易断线)

cd grpc
vim .gitmodules

修改 (主要是修改源路径的下载地址,改成其他镜像源)

[submodule "third_party/zlib"]
        path = third_party/zlib
        url = https://hub.xn--gzu630h.xn--kpry57d/madler/zlib
        # When using CMake to build, the zlib submodule ends up with a
        # generated file that makes Git consider the submodule dirty. This
        # state can be ignored for day-to-day development on gRPC.
        ignore = dirty
[submodule "third_party/protobuf"]
        path = third_party/protobuf
        url = https://hub.xn--gzu630h.xn--kpry57d/google/protobuf.git
        branch = 3.0.x
[submodule "third_party/gflags"]
        path = third_party/gflags
        url = https://hub.xn--gzu630h.xn--kpry57d/gflags/gflags.git
[submodule "third_party/googletest"]
        path = third_party/googletest
        url = https://hub.xn--gzu630h.xn--kpry57d/google/googletest.git
[submodule "third_party/benchmark"]
        path = third_party/benchmark
        url = https://hub.xn--gzu630h.xn--kpry57d/google/benchmark
[submodule "third_party/boringssl-with-bazel"]
        path = third_party/boringssl-with-bazel
        url = https://hub.xn--gzu630h.xn--kpry57d/google/boringssl.git
[submodule "third_party/cares/cares"]
        path = third_party/cares/cares
        url = https://hub.xn--gzu630h.xn--kpry57d/c-ares/c-ares.git
        branch = cares-1_12_0
[submodule "third_party/bloaty"]
        path = third_party/bloaty
        url = https://hub.xn--gzu630h.xn--kpry57d/google/bloaty.git
[submodule "third_party/abseil-cpp"]
        path = third_party/abseil-cpp
        url = https://hub.xn--gzu630h.xn--kpry57d/abseil/abseil-cpp.git
        branch = lts_2020_02_25
[submodule "third_party/envoy-api"]
        path = third_party/envoy-api
        url = https://hub.xn--gzu630h.xn--kpry57d/envoyproxy/data-plane-api.git
[submodule "third_party/googleapis"]
        path = third_party/googleapis
        url = https://hub.xn--gzu630h.xn--kpry57d/googleapis/googleapis.git
[submodule "third_party/protoc-gen-validate"]
        path = third_party/protoc-gen-validate
        url = https://hub.xn--gzu630h.xn--kpry57d/envoyproxy/protoc-gen-validate.git
[submodule "third_party/udpa"]
        path = third_party/udpa
        url = https://hub.xn--gzu630h.xn--kpry57d/cncf/udpa.git
[submodule "third_party/libuv"]
        path = third_party/libuv
        url = https://hub.xn--gzu630h.xn--kpry57d/libuv/libuv.git

ps,最新版的grpc好像还新增了一个模块叫做 re2

理论上也加个 https://hub.xn--gzu630h.xn--kpry57d 前缀就能下载了

下载子模块 (半个小时吧,换源已经很快了)

git submodule update --init

编译安装

官方编译指引

grpc/BUILDING.md at master · grpc/grpc · GitHub

# 创建cmake构建目录, 一般cmake都不在当前目录下, cmake 好像不能清理, 只有cmake3 好像支持 cmake3 clean
mkdir -p cmake/build
cd cmake/build
# 执行cmake命令, BUILD_SHARED_LIBS 表示需要生成so库, CMAKE_INSTALL_PREFIX 指定安装路径
cmake ../.. -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=ON  -DCMAKE_INSTALL_PREFIX=/home/abc/
# 加上-j指定同时编译的cpu核数, 加快速度, 4核就 -j4 就行
make -j8
make install

我指定安装的路径是 /home/abc/

注意

grpc团队,应该就是谷歌团队,自己fork了一个openssl分支,叫做boringssl,(谷歌团队好像要往openssl 1.1.0 靠拢),这是下载的一个子模块,比openssl多了一些自己的函数,编译了一个so库也叫 libssl.so,在前面的安装路径能看到它

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值