导航:首页 > 源码编译 > protoc编译指令

protoc编译指令

发布时间:2022-04-19 05:04:45

❶ 如何编译protobuf 文件

ProtoBuf java 包编译ProtoBuf的官方下载包并不包含jar文件,需要用户自己configure/make….来自行编译。由于Windows上没有编译环境,就用了一个笨一点方法处理了。
分别下载:
protobuf-2.4.1.zip ProtoBuf的源文件(包含了C++/Java/python)的源文件
protoc-2.4.1-win32.zip 已经编译过的用于Windows平台的protoc命令(该命令用于将.proto文件转化为Java或C++源文件)。

分别解析这两个文件,你可以在protoc-2.4.1-win32.zip解压后的文件中找到一个protoc.exe文件,将其到protobuf-2.4.1/src目录下,然后进入protobuf-2.4.1/java,执行:
mvn install

❷ ubuntu 怎么查看protoc版本

终端执行列指令:cat/etc/issue 查看前运行 Ubuntu 版本号其输结类似面内容: Ubuntu 10.04 LTS \n \l二 使用 lsb_release 命令查看 Ubuntu 版本号与相比内容更详细执行指令: sudo lsb_release -a 输结: No LSB moles are available. Distributor ID:Ubuntu Description: Ubuntu 10.04 LTSRelease:10.04Codename:lucid LSB套核标准,保证LINUX发行版同LINUX应用程序间良结合,具体说,:1、 二进制接口规范指应用程序系统间迁移用重新编译保证应用程序所经认证LINUX发行版都具兼容性2、测试规范测试 LINUX发行版LINUX应用程序否符合LSB标准3、搭建遵LSB规范应用程序发环境4、纯LSB环境运行测试应用程序提 供运行环境本

❸ protobuf c++代码怎么编译

步骤一:部署protoc.exe 1)sudo su ---进入管理模式 //以下操作切换至protobuf文件夹下 2)./configure 3)make 4)make check 5)make install 此时可以查看protobuf文件夹下面的makefile文件,可以查看-build表示的本机环境以及-host表示的编译...

❹ 如何编译安装protobuf极其python版本

首先从google上下载protobuf-2.5.0.zip和protoc-2.5.0-win32.zip,然后把protoc-2.5.0-win32.zip里的protoc.exe放到protobuf-2.5.0\src\下。 切换到protobuf-2.5.0\python 执行指令 python setup.py build, python setup.py test, python setup....

❺ protobuf 怎么在iOS中实用

有两种方式,一是直接使用C++版, 引用.h和dylib就可以了, 用在64位的5s上很容易,但是在5以下的32位上编译环不容易弄对。
二是用objc版的。可以参考如下操作:
1,下载ProtocolBuffer包,并按照包中根目录下README.txt安装。
make install后,会生成编译器protoc,并拷贝到/usr/local/bin目录下。

2,下载Objective-C compiler for ProtocolBuffer。

目前有两种类型的实现。

一个针对ProtocolBuffer2.2做修改,使最后生成的.proto文件编译器(protoc)支持Objective-C类型的文件输出。

它在这里:http://code.google.com/p/metasyntactic/wiki/ProtocolBuffers

另一个针对ProtocolBuffer2.3推出的plugin模式编写插件,以插件方式支持Objective-C类型的文件输出。

它在这里:https://github.com/booyah/protobuf-objc

我选用第二种方式,这也是Google推荐的方式。

git clone https://github.com/booyah/protobuf-objc.git

默认会在当前运行目录下创建protobuf-objc目录。进入该目录,并执行:

./autogen.sh

./configure

make

make install

最终生成的插件名字为protoc-gen-objc,会被安装到/usr/local/bin/目录下。

3,测试.proto文件编译。

随便写一个test.proto文件,并编译该文件。命令是:

protoc –objc_out=/Output/Directory/ test.proto

protoc会自动在/usr/local/bin/目录下寻找名为”protoc-gen-objc”的插件,并使用该插件编译.proto文件,最终生成两个文件:

test.pb.h

test.pb.m

这个步骤通过后,说明ProtocoBuffer Compiler for Objective-C可以正常工作了。

4,在Xcode4.3.1中使用ProtocolBuffer

将步骤2中protobuf-obj/src/runtime/Classes目录导入到Xcode项目中,导入时,选中”Copy items into destination group‘s folder(if needed)“。

导入位置选择项目根目录。导入完毕后,项目根目录下将会出现Classes目录。将该目录改名为ProtocolBuffers(注意最后的s):

mv Classes ProtocolBuffers

修改项目属性中”Build Setting——>Header Search Pathes”,将项目根目录“.”添加到头文件搜索路径中去。

这样ProtocolBuffer for Objective-C的工作环境就配置好了。

5,使用

将步骤3中编译输出的test.pb.h和test.pb.m添加到项目中,就可以直接使用了。

❻ python怎么经过protobuf完成rpc

客户方像挪用当地办法同样去挪用长途接口办法,RPC 结构供给接口的署理完成,理论的挪用将拜托给署理RpcProxy
。署理封装挪用资讯并将挪用转交给RpcInvoker 去理论履行。在客户真个RpcInvoker 经过衔接器RpcConnector
去保持与效劳端的通道RpcChannel,并运用RpcProtocol
履行协定编码(encode)并将编码后的恳求音讯经过通道发送给效劳方。RPC 效劳端接纳器 RpcAcceptor
接纳客户真个挪用恳求,一样运用RpcProtocol 履行协定解码(decode)。解码后的挪用资讯传送给RpcProcessor
去掌握处置挪用进程,末了再拜托挪用给RpcInvoker 去理论履行并前往挪用后果。

protobuf
rpc在下面组件中首要表演RpcProtocol的人物,使得咱们省去了协定的描绘,而且protobuf协定在编码和时间效力都是上十分高效的,这也是许多公司选用protobuf作为数值序列化和通讯协议的起因。一起protobuf
rpc界说了一个笼统的rpc结构,以下图所示:

RpcServiceStub和RpcService类是protobuf编译器依据proto界说天生的类,RpcService界说了效劳端表露给客户真个函数接口,详细完成需求用户本人担当这个类来完成。RpcServiceStub界说了效劳端表露函数的描绘,并将客户端对RpcServiceStub中函数的挪用同一转换到挪用RpcChannel中的CallMethod办法,CallMethod经过RpcServiceStub传过去的函数描绘符和函数参数对该次rpc挪用停止encode,最后经过RpcConnecor发送给效劳方。自己以客户端相反的进程最后挪用RpcSerivice中界说的函数。现实上,protobuf

rpc的结构仅仅RpcChannel中界说了空的CallMethod,以是详细怎么样停止encode和挪用RpcConnector都要本人完成。RpcConnector在protobuf中没有界说,以是这个完结由用户本人完成,它的效果那是收发rpc音讯包。在效劳端,RpcChannel经过挪用RpcService中的CallMethod来详细挪用RpcService中表露给客户真个函数。

引见了这么多,关于怎样用protobuf rpc来完成一个rpc确定仍是一头雾水吧,下面就用protobuf rpc来完成一个简略的python版rpc demo吧。

下面间接给出demo描绘PRC的proto文件,至于proto文件的编写规定能够参考protobuf官网。

common.proto文件:

package game;

message RequestMessage
{
required string message = 1;
}

message ResponseMessage
{
required string message = 1;
}

game_service.proto文件:

package game;

import "common.proto";
option py_generic_services = true;

service GameService
{
rpc connect_server(RequestMessage) returns(RequestMessage);
}

common.proto文件描绘了RPC中收发的音讯;game_service.proto描绘了效劳器导出的connect_server函数,该函数承受RequestMessage目标作为参数,并前往RequestMessage目标。在运用PRC协定时,必需加之option
py_generic_services =
true;可选项,要否则编译器不会天生蕴含connect_server函数的GameService描绘。

运用编译器protoc编译proto文件,详细号令为:
protoc.exe --python_out=. game_service.proto
编译后天生的文件为game_service_pb2.py,该文件首要是完成了GameService和GameService_Stub类。GameService_Stub类用于客户端挪用者来挪用GameService的效劳。
后面曾经说了,在客户端,RpcChannel只完成了一个空的CallMethod,以是需求担当RpcChannel从新这个函数来encode音讯和发送音讯。在效劳端RpcChannel需求挪用CallMethod来挪用Service中的函数。详细完成以下:

class MyRpcChannel(service.RpcChannel):
def __init__(self, rpc_service, conn):
super(MyRpcChannel, self).__init__()
self.logger = LogManager.get_logger("MyRpcChannel")

def CallMethod(self, method_descriptor, rpc_controller, request, response_class, done):
""""protol buffer rpc 需求的函数,用来发送rpc挪用"""
self.logger.info('CallMethod')
cmd_index = method_descriptor.index
assert(cmd_index < 65535)
data = request.SerializeToString()
total_len = len(data) + 2
self.conn.send_data(''.join([pack('<I', total_len), pack('<H', cmd_index), data]))

def from_request(self):
""""从收集剖析出一个完好的恳求以后调的函数"""
index_data = self.rpc_request.data[0:2]
cmd_index = unpack('<H', index_data)[0]
rpc_service = self.rpc_service
s_descriptor = rpc_service.GetDescriptor()
method = s_descriptor.methods[cmd_index]
try:
request = rpc_service.GetRequestClass(method)()
serialized = self.rpc_request.data[2:]
request.ParseFromString(serialized)
rpc_service.CallMethod(method, self.controller, request, None)
except:
self.logger.error("Call rpc method failed!")
self.logger.log_last_except()
return True

末了那是担当GameService,并完成connect_server函数了。

class GameService(game_service_pb2.GameService):
def __init__(self):
self.logger = LogManager.get_logger("GameService")

def connect_server(self, rpc_controller, request, callback):
self.logger.info('%s', request.message)

至于用于收集收发音讯的RpcConnector,可使用python的asyncore库完成,详细完成在这就不评论了。

从下面的完成来看,protobuf rpc的完成首要囊括编写proto文件并编译天生对应的service_pb2文件,担当RpcChannel并完成CallMethod和挪用Service的CallMethod,担当Service来完成表露给客户真个函数。

❼ protobuf怎么编译出protoc.exe

核心概念
1,.proto文件
相当于确定数据协议,数据结构中存在哪些数据,数据类型是怎么样

2,modifiers
2-1 required 不可以增加或删除的字段,必须初始化
2-2 optional 可选字段,可删除,可以不初始化
2-3 repeated 可重复字段, 对应到java文件里,生成的是List

3,Message
在proto文件里,数据的协议时以Message的形式表现的。

4, Build
生成具体的java类时,例如Person.java,同时会存在build方法。文档的意思是对于转化后的数据,具有唯一性,build提供了便利的方法来初始化这些数据。

❽ protoc.exe生成java代码一定要用命令行吗

是的,这个是用命令来执行的,不过你可以把命令写成windows的批处理文件 ,即.bat文件,每次双击即可执行。也可以使用java代码去调用protoc.exe。做成自动化的。

❾ 如何提供java编译protobuf协议文件的速度

ProtoBuf java 包编译
ProtoBuf的官方下载包并不包含jar文件,需要用户自己configure/make….来自行编译。由于Windows上没有编译环境,就用了一个笨一点方法处理了。
分别下载:
protobuf-2.4.1.zip ProtoBuf的源文件(包含了C++/Java/Python)的源文件
protoc-2.4.1-win32.zip 已经编译过的用于Windows平台的protoc命令(该命令用于将.proto文件转化为Java或C++源文件)。

分别解析这两个文件,你可以在protoc-2.4.1-win32.zip解压后的文件中找到一个protoc.exe文件,将其到protobuf-2.4.1/src目录下,然后进入protobuf-2.4.1/java,执行:
mvn install

如果没有安装maven的话,可以在网上找一下maven的安装手册。
编译完成后可以在protobuf-2.4.1/java/target目录中找到protobuf-2.4.1.jar文件.
后记
protobuf-2.4.1.zip里面同时包含了protoc和java等的源文件,如果按照官方教程来安装的话,就是先产生出protoc编译器,然后再生成jar包。由于mvn install同时包含了编译和测试过程,而测试代码又依赖于protoc编译器,所以就需要单独下载protoc编译器,并置于src目录下了。

如果不需要验证编译结果(不执行单元测试),则可以如下:
下载protobuf-2.4.1.zip并解压,进入到protobuf-2.4.1/java
mvn install –Dmaven.test.skip=true
这样就可以了。

❿ 如何用eclipse编译运行protobuf文件

protobuf-2.4.1.zip ProtoBuf的源文件(包含了C++/Java/Python)的源文件
protoc-2.4.1-win32.zip 已经编译过的用于Windows平台的protoc命令(该命令用于将.proto文件转化为Java或C++源文件)。

阅读全文

与protoc编译指令相关的资料

热点内容
服务器空闲怎么办 浏览:831
数据库使用加密函数 浏览:343
程序员做些什么 浏览:1002
加密未来的趋势 浏览:323
分数等式运算法六年级 浏览:427
单片机怎么设置入口和出口参数 浏览:868
java字符串gbk 浏览:955
编程中的树的遍历分为哪三种类型 浏览:136
核心编程为什么要变量 浏览:704
学动漫编程就业行情好吗 浏览:164
python连接多个类 浏览:596
退app会员费找哪里投诉 浏览:568
射击pdf 浏览:86
python多张图片拼接与层叠 浏览:979
河北廊坊电信dns服务器地址 浏览:851
老股民指标源码 浏览:32
伟福显示未安装编译器什么意思呢 浏览:235
拉伸命令cad 浏览:491
yy安卓怎么抢麦 浏览:934
阿里云共享型服务器价格 浏览:444