導航:首頁 > 源碼編譯 > 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編譯指令相關的資料

熱點內容
問道4月5日為什麼伺服器超時 瀏覽:989
伺服器的url地址是什麼 瀏覽:973
上台唱歌前如何緩解壓力 瀏覽:169
有什麼約飯app 瀏覽:648
於小冬速寫pdf 瀏覽:156
android服務例子 瀏覽:395
androidstring轉json 瀏覽:74
y85手機為什麼不能用安卓線 瀏覽:579
傲夢少兒編程線下教育 瀏覽:471
哪個音樂app有txt的版權 瀏覽:639
dynamo文件夾能刪除嗎 瀏覽:277
程序員用的點擊選顏色的軟體 瀏覽:204
衢州java程序員接私活app 瀏覽:280
java定義變數類型 瀏覽:905
vivo加密門禁卡怎麼使用 瀏覽:638
單片機拆裝 瀏覽:688
js獲取嵌入網站的源碼 瀏覽:820
程序員的職位進階 瀏覽:405
微信全屏頭像源碼 瀏覽:289
伺服器空閑怎麼辦 瀏覽:833