Ubuntu系统中本地编译并安装grpc和arm版本的c++版本

grpc没有现成的C++版本,在使用时必须自己下载源代码进行编译,这个过程不是很难,但是有很多坑。下面就将我在Ubuntu 16.04系统上编译、安装过程记录如下,方便大家参考和借鉴。

1.安装相关的依赖工具和依赖包

# 安装pkg-config
sudo apt-get install pkg-config
# 安装依赖包
sudo apt-get install autoconf automake libtool make g++ unzip
sudo apt-get install libgflags-dev libgtest-dev
sudo apt-get install clang libc++-dev

2.下载grpc源码

在下载源码的过程中,需要注意的是,不要使用最新的版本,最新的版本一般不稳定或者有一些bug未修复。笔者在编译的过程中,从github上下载了最新的版本时,编译就报错了,有一个错误是一个源代码中的错误,看了源代码也未能解决。后来是下载了前面一点的版本才正常编译通过。

# 下载特定版本的grpc源代码,这里最后下载到固定的地方,方便以后管理,默许下载于/home/user/grpc/目录
git clone -b v1.14.0 https://github.com/grpc/grpc.git
cd grpc
# 下载其依赖的子模块
git submodule update --init

3.安装protobuf

# 此时应在grpc文件夹下
cd third_party/protobuf/
# 更新依赖的子模块
git submodule update --init --recursive
# 生成配置脚本
sudo ./autogen.sh   
# 生成makefile文件
sudo ./configure
# 从makefile读取指令编译
sudo make
# 可能报错,但不影响安装
sudo make check
# 安装
sudo make install
# 更新共享库缓存
sudo ldconfig
# 查看安装的位置
which protoc
#查看是否安装成功
protoc --version

在编译过程中,若make版本太低,可以用make uninstall命令先卸载再重新安装新版本。清除编译过程中产生的文件及目标文件,可用make clean命令。

4.安装grpc

这一步是关键了,也是最容易出问题的地方。因此,先检查一下系统中cmake的版本,若版本低于3.13,可以重新安装成最新的版本。如下图所示,我系统中的版本比较低,所以要重新安装。

进入到cmake 官网下载 下载最新的版本,如下图所示:

(如果本机有cmake版本3.16版本以上可不需安装新版本cmake)放入到/tmp目录下,解压后运行,如下所示:

sudo tar zxvf  cmake-3.24.2.tar.gz
# 进入解压后的文件夹,
sudo ./bootstrap

在运行过程中可能报错如下:

此时,直接运行安装:sudo apt-get install libssl-dev

若报错如下:

此时,直接运行安装:sudo apt-get install g++

然后直接运行:

# 编译
sudo make -j8
# 安装
sudo make -j8 install
# 查看成功与否
cmake --version

cmake安装成功之后,就可以编译安装grpc了。安装步骤如下:

# 进入到grpc文件夹下
# 创建编译文件夹
mkdir -p cmake/build
cd cmake/build
cmake ../..
# 编译
make -j8
# 安装
sudo make -j8 install

5.测试安装成功与否

编译源代码中的helloworld文件夹下的文件,步骤如下:

# 进入grpc文件夹下
cd examples/cpp/helloworld
mkdir build
cd build
# 编译
cmake ..
make -j8 

编译完成后,在文件夹下就生成了可执行文件,先执行./greeter_server,显示如下图所示:

再执行./greeter_client,在客户端会打印输出,如下图所示,说明安装运行正确。

最后,值得说明的是,对于遇到问题最好的资料是看官方文档,不要随意去搜,这样可能会走很多弯路,其实官网已经有比较详细的 安装指导,只是我当时没有好好运用罢了。

链接来源:https://zhuanlan.zhihu.com/p/564304597

arm编译方法

git clone https://github.com/grpc/grpc

git checkout v1.34.x   切换分支到1.34.x

1 进入zlib文件夹中进行交叉编译

 2  因是x86环境是使用交叉编译器,所以系统环境是不包含交叉编译器的,需要设置环境变量

 

 3 将ld-linux-aarch64.so.1拷贝到/lib下

 

 4 编译

 

参考链接:grpc arm 交叉编译(ubuntu 16.04)_万丈高楼平地起_勿在浮沙筑高台的博客-优快云博客_grpc交叉编译 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值