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();
msg1.set_str("hello"); fstream output("./log", ios::out | ios::trunc | ios::binary); if(!msg1.SerializeToOstream(&output)) {
cerr << "Failed to write msg." << endl;
return -;
}
return ;
}
写了一个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用的人比较多,最终也是靠查找以前做的记录才搞好。
Linux Eclipse 运行Protobuf的更多相关文章
- 20145225《Java程序设计》实验一 Java开发环境的熟悉(Linux + Eclipse)
20145225<Java程序设计> 实验一 Java开发环境的熟悉(Linux + Eclipse) 实验内容 1.使用JDK编译.运行简单的Java程序: 2.使用Eclipse 编辑 ...
- Java项目打包在CMD或者Linux下运行
Java项目打包在CMD或者Linux下运行 1.在CMD下运行 在eclipse中将项目export成jar包,然后用压缩软件解压
- 实验一 Java开发环境的熟悉(Linux + Eclipse)
学号 20175206 实验一 <Java开发环境的熟悉>实验报告 实验内容 1.使用JDK编译.运行简单的Java程序: 2.使用Eclipse 编辑.编译.运行.调试Java程序. 实 ...
- 20145203盖泽双实验一 Java开发环境的熟悉(Linux + Eclipse)
实验一 Java开发环境的熟悉(Linux + Eclipse) 实验内容 1.使用JDK编译.运行简单的Java程序: 2.使用Eclipse 编辑.编译.运行.调试Java程序. 实验要求 1.没 ...
- 实验一 Java开发环境的熟悉(Linux+Eclipse)
实验一 Java开发环境的熟悉(Linux+Eclipse) 实验内容及步骤 使用JDK编译.运行简单的Java程序 打开windows下的cmd → 输入cd Code命令进入Code目录 → 输入 ...
- 20155235 《Java程序设计》 实验一 Java开发环境的熟悉(Linux + Eclipse)
20155235 <Java程序设计> 实验一 Java开发环境的熟悉(Linux + Eclipse) 实验内容 1.使用JDK编译.运行简单的Java程序: 2.使用Eclipse 编 ...
- 实验一 Java开发环境的熟悉(Linux+Eclipse)
实验一 Java开发环境的熟悉(Linux+Eclipse) 在Linux或Window或macOS中命令行下运行Java 在Linux 或Window或 macOS环境中 IDEA中调试设置断点 实 ...
- 20162303 实验一 Java开发环境的熟悉(Linux + Eclipse)
北京电子科技学院(BESTI) 实 验 报 告 课程:程序设计与数据结构 班级: 1623 姓名: 石亚鑫 学号:20162303 成绩: 2分 指导教师:娄嘉鹏 王志强 实验日期:3月17日 实验密 ...
- 20162321 实验一 Java开发环境的熟悉(Linux + Eclipse)
北京电子科技学院(BESTI) 实 验 报 告 课程:程序设计与数据结构 班级: 1623 姓名: 王彪 学号:20162321 指导教师:娄嘉鹏 王志强 实验日期:3月25日 实验密级: 非密级 预 ...
随机推荐
- ambari删除脚本
#.删除hdp.repo和hdp-util.repo cd /etc/yum.repos.d/ rm -rf hdp* rm -rf HDP* #rm -rf ambari* #.删除安装包 #用yu ...
- Spring Cloud Config 配置中心高可用
详细参见 <Spring Cloud 与 Docker微服务架构实战> p163-9.10 Spring Cloud Config 与 Eureka 配合使用 p163-9.12 Conf ...
- CentOS的Gearman安装
背景:用PHP做一些简单的上传是没有任何的问题,但是要做断点上传好像也是没有大问题,但要是并发的切片加断点上传可能就会有问题了哟.第一个问题是合并问题:如果一上传就合并,PHP老半天不返回是一个方面( ...
- 开始一段新的敏捷学习之旅 —— IT帮读书会第4期《Scrum实战》
刚看了一下,距离上一次写博客过去快1年半了.之前的知识管理都放到笔记软件中了,但是现在看来,收藏了很多东西,输入很多,但是输出有限. 学习任何领域的知识,如果只有输入没有输出,效果都是很有限的,有时需 ...
- android 编译错误 Error:(1, 0) Plugin with id 'com.android.application' not found.
在导入一个项目时,由于它本身的gradle版本比较高,你试用比较旧版本的gradle时就报出Plugin with id 'com.android.application' not found.的错误 ...
- Sword STL之map效率问题
#include <iostream> #include <map> #include <vector> using namespace std; /* STL容器 ...
- WPF Tutorial - Using A Visual Collection
While WPF and XAML make the common 90% of UI programming quite easy, sometimes it gets a little odd ...
- USB2.0学习笔记连载(十四):USB驱动安装及固件程序的编写
在之前的博客中已经讲过,驱动程序最核心的两个文件,一个是xxx.sys文件,一个是xxx.inf文件,主机是寻找xxx.inf文件. 在下面的文件中有相关关于USB驱动的说明.对于用户来说,xxx.s ...
- 关于Unity的NGUI
NGUI是严格遵循KISS原则并用C#编写的Unity(适用于专业版和免费版)插件,提供强大的UI系统和事件通知框架 KISS原则:Keep It Simple,Stupid NGUI实例 1.创建U ...
- pandas汇总和计算描述统计
pandas 对象拥有一组常用的数学和统计方法. 他们大部分都属于简约和汇总统计, 用于从Series中提取单个值(如sum或mean) 或从DataFrame的行或列中提取一个Series.跟对应的 ...