首页 > 代码库 > Linux Eclipse 运行Protobuf

Linux Eclipse 运行Protobuf

安装环境Ubuntu 14.04 64 bit

 

安装过程分为三步

1. Linux下安装Protobuf

2. Eclipse下安装protobuf.dt插件

3. Eclipse下配置动态链接库并运行demo

 

第一步 Linux下安装protobuf

到官网下载protobuf,目前的最新版本是2.5.0,也是超过1年没有更新了

解压,进入文件夹内,依次运行下面的命令

./config

make

make check

sudo make install(这一步需要管理员权限,否则会报错)

修改动态链接库

sudo su - 以管理员身份执行下面的命令

在 vim ld.so.conf 加入 /usr/local/lib保存退出

执行ldconfig

protoc --version 即可看到版本号

这里注意,首先make install命令需要创建文件夹,因此要管理员权限;其次,直接su ldconfig在我机器上会报错,我就直接sudo su -;最后,我直接将./config安装到默认的文件夹下(/usr/local/lib)下了,因此不需要配置环境变量

 

第二步 Eclipse下安装protobuf.dt插件

链接: https://code.google.com/p/protobuf-dt/wiki/Installing

实际上需要装两个插件,一个是xtext, 另外是protobuf-dt

直接到eclipse的market去搜就行了

我先装的xtext2.6,又装了protobuf-dt,结果安装失败了,又装了一遍xtext才成功,不知道为什么。

安装完毕后需要在preference做些配置,默认情况下protobuf是不启用的

配置可参考链接: https://code.google.com/p/protobuf-dt/wiki/IntegrationWithProtoc

完成第二步后,可以尝试在一个project钟写xxx.proto文件,你会看到语法高亮,保存后,会自动生成src-gen文件夹,文件夹下有xxx.pb.h和xxx.pb.cc文件

 

第三步 配置动态链接库

#include "msg.pb.h"#include <fstream>#include <iostream>using namespace std;int main(void) {    lm::helloworld msg1;    msg1.set_id(101);    msg1.set_str("hello");    fstream output("./log", ios::out | ios::trunc | ios::binary);    if(!msg1.SerializeToOstream(&output)) {        cerr << "Failed to write msg." << endl;        return -1;    }    return 0;}

写了一个demo,eclipse下编译失败。

但在命令行下 g++ msg.pb.cc writer.cpp -o writer -lprotobuf -lpthread就能编译成功

 

右击project,依次点击preference, C/C++ Buid, Settting, 在Setting下,找到GCC C++ Linker, Libraries, 在Libraries(-l)中添加两个条目,分别是protobuf和pthread

 

第三步卡了我很久,其实这个问题在我以前用boost的时候就碰到过,当初的情况好些,毕竟boost用的人比较多,最终也是靠查找以前做的记录才搞好。