linux下grpc安装编译,linux下安装grpc插件 (c++和go语言)

在debian/ubuntu系统下,需要做如下准备操作:

$ [sudo] apt-getinstallbuild-essential autoconf libtoolpkg-config

如果你想要从源码编译并且运行测试,同时运行下面的安装:

$ [sudo] apt-getinstalllibgflags-dev libgtest-dev

$ [sudo] apt-getinstallclang libc++-dev

下拉源代码信息(包括子模块)

在编译之前,你需要下拉grpc的github仓库,并且下载grpc的一些依赖库,具体操作如下:

$ git clone -b $(curl -L https://grpc.io/release) https://github.com/grpc/grpc$ cd grpc

$ git submodule update --init

protoc安装

默认grpc使用protobuf,你需要protoc编译器来生成服务端和客户端的通信代码。如果你还没有安装protoc编译器,可以考虑编译位于third_party中的protoc。

你可以使用下面的指令安装:

$ cd grpc/third_party/protobuf

$ make&& [sudo]makeinstall# ‘make’ should have been run by core grpc

在grpc根目录调用如下命令:

$make$ makeinstall

这样,grpc将会安装到你的系统目录中。

注意:使用make install安装之后,想要卸载grpc会比较困难。如果你之后想要移除grpc,或者想要升级到一个新的版本,这将会是个问题。对于这个问题,你可以修改Makefile中的prefix定义,在Makefile中,prefix原定义是  prefix ?= /usr/local 。

如果你希望将grpc安装到其他目录,这个需要使用如下的步骤:

(1)修改make调用的Makefile文件中的prefix为你所想要安装的目录(这里假设为/xxx/yyy)

(2)修改~/.bashrc中的PATH变量(用于查找grpc的plugin插件),设置如下:

export PATH=$PATH:/xxx/yyy/bin

(3)修改~/.bashrc 中的PKG_CONFIG_PATH变量,设置如下:

export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/xxx/yyy/lib/pkgconfig

(4)修改~/.bashrc 中的 C_INCLUDE_PATH, CPLUS_INCLUDE_PATH(用于查找头文件位置)和LD_LIBRARY_PATH变量,设置如下:

export C_INCLUDE_PATH=$C_INCLUDE_PATH:/xxx/yyy/include

export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:/xxx/yyy/include

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/xxx/yyy/lib

export LIBRARY_PATH=$LIBRARY_PATH:/xxx/yyy/lib

(5)调用source ~/.bashrc使设置生效

(6) 设置动态库查找位置

在/etc/ld.so.conf.d中新建grpc.conf文件,在其中添加/xxx/yy/lib目录

然后调用ldconfig,使动态库设置生效

(7)如果你想要编译grpc中自带的例子(examples),需要修改/xxx/yyy/lib/pkgconfig/grpc++.pc文件,修改prefix为/xxx/yyy。然后修改例子中的Makefile,在LD_FLAGS中移除-L/usr/local/lib。然后调用make clean, make进行编译。

关于在linux中安装go语言版本的grpc (这里不包括安装protoc,如果你需要安装protoc,可以参考博客中的《在linux中安装protobuf编译器和运行时环境》)

首先确保你使用的go语言版本为go1.6或者更高。你可以调用如下命令:

$ go version

安装grpc

安装方法为:

$ go get -u google.golang.org/grpc

如果上述命令出现超时的问题,你可以采取下面的方式:

$ git clone https://github.com/grpc/grpc-go.git $GOPATH/src/google.golang.org/grpc

对于其中的golang.org/x/net,你也需要做类似的操作:

$ git clone https://github.com/golang/net.git $GOPATH/src/golang.org/x/net

对于使用go1.11及以上版本的,可以考虑使用go mod的replace特性来创建golang.org包的一个别名(这个我没有实际操作过)。在你的项目目录调用:

$ go mod edit -replace=google.golang.org/grpc=github.com/grpc/grpc-go@latest

$ go mod tidy

$ go mod vendor

$ go build -mod=vendor

对于需要使用的golang.org/x/net库,也需要做类似的操作。

有疑问加站长微信联系(非本文作者)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/434525.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SIP资料汇总

SIP协议 SIP协议过程概念及分析 SIP入门开发之路(含SIP开发需要学习的资源及网址) SIP揭密(中文版) 使用Java的SIP Servlet进行SIP开发 Asterisk: Asterisk安装及测试 Asterisk十问十答 Asterisk入门教程 Asterisk介绍-Asterisk RealTime SIP asterisk配…

Nand Flash Yaffs系统大量写入数据失败问题的解决方法。

一个朋友的问题,我们共同分析后搞定。其实以前也遇到过同样问题,时间长了,没总结。 事发:在Nand Flash上使用2.6.14的linux kernel,三星2440的板子,连续写入文件,到一定大小限制就删除&#xff…

linux上的壁纸软件下载,Ubuntu 17.10上安装开源壁纸工具Wallch 4.0

在Ubuntu 17.04上安装WallchWallch是一款免费的开源通用壁纸更换器,用户可以在设置的时间更改桌面背景图片。它会在桌面上更改并显示随机图片或维基百科的当天图片。它还具有一个实时地球Living Earth壁纸,每30分钟更换桌面背景,以显示阳光和…

Asp.NET 获取网站根目录

http://www.cnblogs.com/Leo_wl/archive/2010/06/12/1757148.html转载于:https://www.cnblogs.com/imihiroblog/archive/2012/05/23/2514649.html

小议同步IO :fsync与fdatasync

对于提供事务支持的数据库,在事务提交时,都要确保事务日志(包含该事务所有的修改操作以及一个提交记录)完全写到硬盘上,才认定事务提交成功并返回给应用层。 一个简单的问题:在*nix操作系统上,怎…

linux c++ queue 多线程,C++多线程,消息队列用法

进程是没有活力的,它只是一个静态的概念。为了让进程完成一些工作,进程必须至少占有一个线程,所以线程是描述进程内的执行,正是线程负责执行包含在进程的地址空间中的代码。实际上,单个进程可以包含几个线程&#xff0…

获取磁盘类型

1. GetLogicalDriveStrings获取所以的分区字符串 2. GetDriveType("C:\\"); 对每个分区字符串分别调用GetDriveType获得分区所在磁盘的磁盘类型。 0 DRIVE_UNKNOWN未知的磁盘类型   1 DRIVE_NO_ROOT_DIR说明lpRootPathName是无效的   2 DRIVE_REM…

css3 (2)

Php1情景模拟:如果是在C盘,遇到熊猫,数据丢失。我们要重装系统,格C盘。我们要更改对应的访问的目录。需要改apache下面的配置文件Appserv 是集成环境包,里面也是apache服务器在运行网页请求。Apache目录下面有一个conf…

linux find显示文件的基本信息,命令find搜索文件,命令stat查看文件的详细信息

命令stat命令语法stat(选项)(参数)命令描述命令stat用于显示文件的状态信息。stat命令的输出信息比ls命令的输出信息要更详细。命令选项-L:支持符号连接;-f:显示文件系统状态而非文件状态;-t:以简洁方式输出信息&#…

C# String.Format格式说明

C#格式化数值结果表 字符 说明 示例 输出 C货币string.Format("{0:C3}", 2)$2.000D十进制string.Format("{0:D3}", 2)002E科学计数法1.20E0011.20E001G常规string.Format("{0:G}", 2)2N用分号隔开的数字string.Format("{0:N}…

Linux添加网站后无法显示,Linux:SElinux导致网站无法访问

通过更改SElinux状态可以判断出,当SElinux处于关闭状态时,网站内容访问正常。[rootmaster1-192-168-117-18 ~]# setenforce 0[rootmaster1-192-168-117-18 ~]# getenforcePermissive[rootmaster1-192-168-117-18 ~]# setenforce 1[rootmaster1-192-168-1…

Linux rpm 命令参数使用详解[介绍和应用]

RPM是RedHat Package Manager(RedHat软件包管理工具)类似Windows里面的“添加/删除程序” rpm 执行安装包 二进制包(Binary)以及源代码包(Source)两种。二进制包可以直接安装在计算机中,而源代…

VS快捷键和小功能

转自:http://www.cnblogs.com/wangshenhe/archive/2012/05/28/2521393.html备份一个 VS隐藏的快捷键和小功能 可将代码放入工具箱,类似控件使用。CtrlShiftV:剪贴板循环粘贴。CtrlT:变换一个字符,即将字符后移。CtrlShiftT:变换一个词&#x…

linux 分区 文件,Linux的分区与文件结构

Linux操作系统与我们经常使用的windows操作系统有所不同,Linux主机上的设备以及系统的分区都以文件的形式存在着。接下来就将Linux系统中设备以及分区的标识方法以及目录结构做以详细介绍。在Linux系统中主要以接口类型来区分不同的存储设备:IDE接口用hd来表示&…

CentOS卸载OpenJDK并安装Sun JDK

第一步:查看Linux自带的JDK是否已安装 (卸载centOS已安装的1.4) 安装好的CentOS会自带OpenJdk,用命令 java -version ,会有下面的信息: java version "1.6.0" OpenJDK Runtime Environment (build 1.6.0-b09…

AndroidManifest.xml文件详解(uses-sdk)

语法&#xff08;SYNTAX&#xff09;&#xff1a; <uses-sdkandroid:minSdkVersion"integer" android:targetSdkVersion"integer" android:maxSdkVersion"integer"/> 被包含于&#xff08;CONTAINED IN&#xff09;&a…

xps13 linux 硬盘分区,在xps13上安装ubuntu16.04教程

在windows界面下&#xff0c;通过磁盘管理器&#xff0c;从硬盘中分出40G的空闲空间。重启电脑&#xff0c;进入BIOS&#xff0c;将启动模式修改为ACHI(如果想系统安装成功后可以直接使用无线wifi&#xff0c;请将security boot关闭&#xff1b;否则&#xff0c;默认只能使用有…

Ubuntu10.10的网络配置

有一阵子着实对Ubuntu的网络配置很迷惑&#xff0c;耐下心来仔细上网找了找&#xff0c;有点小心得&#xff0c;总结一下。 先说下大概的配置过程&#xff0c;再去细究一些情况。 一、配置大概分三类&#xff1a;通过配置文件配置、通过命令配置、通过图形化的网络连接菜单配置…

sp_executesql介绍和使用 转

转自http://www.cnblogs.com/wanyuan8/archive/2011/11/09/2243483.htmlexecute相信大家都用的用熟了&#xff0c;简写为exec,除了用来执行存储过程&#xff0c;一般都用来执行动态Sql sp_executesql&#xff0c;sql2005中引入的新的系统存储过程&#xff0c;也是用来处理动态s…

linux多网卡udp组播收不到数,UDP组播,完成端口,双网卡收不到数据?帮帮忙

当前位置:我的异常网 网络通信 UDP组播&#xff0c;完成端口&#xff0c;双网卡收不到数据&#xff1f;帮帮忙UDP组播&#xff0c;完成端口&#xff0c;双网卡收不到数据&#xff1f;帮帮忙www.myexceptions.net 网友分享于&#xff1a;2013-04-13 浏览&#xff1a;848次UDP…