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用的人比较多,最终也是靠查找以前做的记录才搞好。