Protobuf 在Ubuntu 14.04上的編譯與使用
轉自:http://www.linuxidc.com/Linux/2016-01/127505.htm
前言
一直知道Google開源的一個與語言無關的資料交換協議:protobuf。只知道是一種不同於json和XML的格式,還有就是效能特別的好(這在Java和C++的實現確實是!)
最近閒下來看了下Google的Protobuf的相關東西,然而baidu出來的東西很多都過時了,我不得不花些時間來倒騰,於是就有了如下的內容。
•下載原始碼與準備工作
$ sudo apt-get install autoconf automake libtool curl
$ git clone https://github.com/google/protobuf
$ cd protobuf
•修改autogen.sh
由於“你懂的”的原因,autogen無法curl下載到gmock的原始碼包,所以我把gmock的包放到了自己的github上。修改autogen.sh,讓它下載我github上的包
[email protected]:~/protobuf/protobuf$ git diff
diff --git a/autogen.sh b/autogen.sh
index 5b4c29f..f2abf77 100755
--- a/autogen.sh
+++ b/autogen.sh
@@ -31,7 +31,7 @@ fi
# directory is set up as an SVN external.
if test ! -e gmock; then
echo "Google Mock not present. Fetching gmock-1.7.0 from the web..."
- curl $curlopts -O https://googlemock.googlecode.com/files/gmock-1.7.0.zip
+ curl $curlopts -L -o gmock-1.7.0.zip https://github.com/peter-wangxu/gMock/archive/1.7.0.zip
unzip -q gmock-1.7.0.zip
rm gmock-1.7.0.zip
mv gmock-1.7.0 gmock
#把curl那一行替換成綠色的
•產生configure檔案
$ ./autogen
•編譯與安裝protobuf
$ ./configure
$ make
$ make check
$ sudo make install
$ sudo ldconfig # refresh shared library cache.
NOTE: 預設是安裝在“/usr/local/lib”下的,在有些平臺/usr/local/lib不是預設的LD_LIBRARY_PATH變數裡面,可以在通過如下命令改變安裝目錄
$ ./configure --prefix=/usr
當看到類似下面的文字,說明protobuf基本安裝完成
============================================================================
Testsuite summary for Protocol Buffers 3.0.0-beta-2
============================================================================
# TOTAL: 6
# PASS: 6
# SKIP: 0
# XFAIL: 0
# FAIL: 0
# XPASS: 0
# ERROR: 0
============================================================================
接下來就是跟Python語言相關的一些配置了
•安裝protobuf的Python支援
cd python # 位於protobuf下
sudo python setup.py install
NOTE: 如果上面命令失敗,你可以試試安裝下pip的相關包,可以解決些python包的依賴問題
sudo apt-get install python-pip
--------------------------------------------------------------------------------
接下來就是使用protobuf了
•編譯.proto檔案
$ touch DataService.proto
# 放入以下內容
message RowProto {
required uint32 null_map = 1;
repeated string column = 2;
}
message TableProto {
repeated string column = 1;
repeated string row = 2;
}
•產生py檔案,供後面的Python使用
protoc --python_out=. ./DataService.proto
•protobuf的使用
建立TestDataService.py檔案,放入下面內容
import sys
import DataService_pb2
#create proto
row = DataService_pb2.RowProto()
row.null_map = 1
row.column.append("wang")
row.column.append("female")
row_str=row.SerializeToString()
print "row_str:", row_str
table = DataService_pb2.TableProto()
table.column.append("name")
table.column.append("gender")
table.row.append(row_str)
table_str = table.SerializeToString()
#process proto
table_proto = DataService_pb2.TableProto()
table_proto.ParseFromString(table_str)
print "column:"
print table_proto.column
row_str = table_proto.row[0]
row_proto = DataService_pb2.RowProto()
row_proto.ParseFromString(row_str.encode('utf8'))
print "row1:"
print row_proto.column
執行TestDataServer.py
[email protected]:~/protobuf/proto_test$ python TestDataService.py
row_str: wangfemale
column:
[u'name', u'gender']
row1:
[u'wang', u'female']
本期的內容就這樣了,主要是protobuf的安裝與配置,使用涉及的很少,後面有時間會加入更多的使用相關的內容
--------------------------------------------------------------------------------
FAQ:
如果遇到:
protoc: error while loading shared libraries: libprotoc.so.10: cannot open shared object file: No such file or directory
解決方案
sudo ldconfig
相關推薦
嘗試在ubuntu 14.04上編譯並啟動linux-2.6.32內核
嘗試 編譯 generic gre 生成 sudo tail rect uil 在ubuntu 14.04上編譯並啟動linux-2.6.32內核 [環境]$ cat /etc/issueUbuntu 14.04.5 LTS \n \l $ uname -aLinux Ui
Protobuf 在Ubuntu 14.04上的編譯與使用
轉自:http://www.linuxidc.com/Linux/2016-01/127505.htm 前言 一直知道Google開源的一個與語言無關的資料交換協議:protobuf。只知道是一種不同於json和XML的格式,還有就是效能特別的好(這在Java和C++
Ubuntu 14.04上使用CMake編譯MXNet原始碼操作步驟(Python)
MXNet原始碼版本號為1.3.0,其它依賴庫的版本號可參考:https://blog.csdn.net/fengbingchun/article/details/84997490 。 為了通過編譯原始碼支援p
Ubuntu 14.04上使用CMake編譯MXNet原始碼操作步驟(C++)
MXNet原始碼版本號為1.3.0,其它依賴庫的版本號可參考:https://blog.csdn.net/fengbingchun/article/details/84997490 build.sh指令碼內容為: #! /bin/bash real_path=$(realpath $0
ubuntu 14.04上原始碼編譯安裝php7
wget https://downloads.php.net/~ab/php-7.0.0alpha2.tar.bz2 //用winscp把下載好的檔案上傳到網站中 tar jxf php-7.0.0alpha2.tar.bz2 安裝: sudo apt-get upda
如何在Ubuntu 14.04上利用jexus搭建支持php+mysql數據庫的網站服務
建立數據庫 wordpress rpc 一個 upd chmod lca chm spel 準備部分:sudo apt-get update sudo apt-get install unzip -y第一部分:安裝jexus 在終端運行以下命令
在Ubuntu 14.04上設置生產環境可用的Node.js
nodejs在Ubuntu 14.04上設置生產環境可用的Node.js提供:ZStack社區前言Node.js是一個開源的JavaScript運行時環境,開發者可以用它方便的構建服務器端應用和網絡應用。Node.js可在Linux、OS X、FreeBSD和Windows上運行,在其上運行的應用使用Java
基於Ubuntu 14.04 LTS編譯Android4.4.2原始碼
轉自:http://blog.csdn.net/gobitan/article/details/24367439 基於Ubuntu 14.04 LTS編譯Android4.4.2原始碼 Dennis Hu 2014-4-21 環境準備: 基
在64位的ubuntu 14.04 上開展32位Qt 程式開發環境配置(pro檔案中增加 QMAKE_CXXFLAGS += -m32 命令)
為了能中一個系統上開發64或32位C++程式,費了些周折,現在終於能夠開始幹過了。在此記錄此時針對Q5.4版本的32位開發環境配置過程。 1. 下載Qt 5.4 的32位版本,進行安裝,安裝過程中會發現一些32位的庫沒有安裝,根據提示的錯誤逐個安裝上即可。 2. 開啟一個SampleCode 中的cube
Ubuntu 14.04上安裝WineTMQQ2013麒麟版
我先後試用了longterm團隊的2013版本號,參見本博連結 http://blog.csdn.net/tao_627/article/details/17524597 和麒麟官網給出的這個改進版本號,參見連結 http://www.ubuntukylin.com
在ubuntu 14.04上LIFT: Learned Invariant Feature Points 環境配置所踩過的坑流過的淚(3)
1.重灌nvidia 顯示卡驅動 2.重灌cuda8.0和cudnn 3。重新測試 看來執行不能用sudo 最後也沒管 2. theano nvcc compiler not found on $PATH 重新配置檔案 解決方案:重灌了一遍cuda 和c
如何在Ubuntu 14.04上備份、恢復及遷移MongoDB資料庫
MongoDB可謂目前人氣最高的NoSQL資料庫引擎之一。其憑藉著出色的可擴充套件性、可靠性與易用性徵服了無數使用者。今天,我們將共同探討如何備份、恢復及遷移MogoDB資料庫。 對資料庫進行匯入與匯出意味著需要以人類可讀的格式處理資料,且確保其與其它軟體
如何在Ubuntu 14.04上利用jexus搭建支援php+mysql資料庫的網站服務
準備部分:sudo apt-get update sudo apt-get install unzip -y第一部分:安裝jexus 在終端執行以下命令 cd /tmp wget https://www.linuxdot.net/down/jexus-5.8.2-x64.
Ubuntu 14.04上驅動開發環境配置,及最簡單一個驅動編寫。
開發ubuntu 14.04 本機使用的驅動程式。 安裝開發工具:* apt-get install build-essential 建2個檔案: 最簡單的驅動程式碼 Hello.c /*0 * hello.c * * Created on: May 14, 2
在Ubuntu 14.04上用BIND配置一個私有網路DNS伺服器
系列教程 本教程為7篇系列中的第6篇:DNS管理簡介 前言 伺服器管理中很重要的一部分就是設定一個有效的域名系統(DNS),這樣可以方便的通過網路名稱連線到指定的IP地址和埠。使用有效域名(FQDN)相比IP的好處是,它們簡化了服務和應用的網路配置,提
Ubuntu 14.04+MatlabR2016b 編譯COCO matlab API
前言 最近需要用到COCO的matlab api,但是github上的master分支最近刪除了maskApi.mexa64檔案。一種方法當然是找找別人原來fork的cocoapi,我想自己編譯生成。 編譯器準備 編譯的時候需要用到mex,但是matlab
Ubuntu 14.04上解決zip格式檔案解壓檔名亂碼問題
大家在使用ubuntu(linux)系統中難免要解壓一些zip結尾的壓縮檔案,由於Windows與ubuntu作業系統的格式問題,所以使用unzip時難免解壓亂碼問題, 解決方法: 需要再安裝一個解壓工具: sudo apt-get install unar 然
Ubuntu 14.04下編譯安裝Vim7.4
原文連線:http://www.linuxidc.com/Linux/2016-04/129774.htm 1、下載Vim74和適合7.4版本的vim-gdb: 如果已經通過軟體中心安裝了vim,則需要將其解除安裝 sudo apt-get r
在Ubuntu 18.04上編譯Linux核心
一、環境說明 編譯環境我選擇了Ubuntu 18.04的虛擬機器,核心截止2018-10-14最新版為4.18.14,筆者即將編譯這個版本 請確保磁碟空間足夠,筆者之前20G編譯到最後空間不足,還得重來 二、編譯步驟 下載核心原始碼 下載到的檔案存
在Ubuntu 14.04上安裝最新版mesa
sudo apt-get install x11proto-gl-dev sudo apt-get install x11proto-dri2-dev sudo apt-get install x11proto-dri3-dev sudo apt-get install x11proto-present