protobuf centos编译,centos如何安装软件
cocos2d-x 2.2能编译64位的吗
hadoop2.x在apache官网直接下载的并没有64位直接能用的版本,如果我们想在64位系统使用,那么就需要重新编译hadoop,否则直接使用32位的hadoop运行在64位的系统上,将会出现一些库不兼容的异常。如下图所示,最直接的一个异常:
在这之前,散仙先用一个表格来描述下散仙的编译的环境的状况:
序号描述备注
1 centos6.5系统64位 linux环境
2 Apache Ant1.9 ant编译
3 Apache Maven3.2.1 maven打包部署
4 gcc,gcc-c,make依赖库
5 protobuf-2.5.0序列化库
6 JDK1.7 JAVA环境
7 Hadoop2.5.0源码包官网下载
8菜鸟工程师一名主角
9
下面进入正题,散仙的环境是在centos下,所以大部分安装编译依赖库,都可以很方便的使用yum命令来完成。
1,安装gcc,执行如下的几个yum命令即可
Java代码
yum-y install gcc
yum-y install gcc-c
yum install make
yum install autoconf automake libtool cmake ncurses-devel openssl-devel gcc*
2,安装JDK,并设置环境变量,完成后测试安装成功否
Java代码
[root@ganglia~]# java-version
java version"1.5.0"
gij(GNU libgcj) version 4.4.7 20120313(Red Hat 4.4.7-4)
Copyright(C) 2007 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
[root@ganglia~]#
3,安装Maven,安装完成后测试安装与否
Java代码
[root@ganglia~]# mvn-v
Apache Maven 3.2.1(ea8b2b07643dbb1b84b6d16e1f08391b666bc1e9; 2014-02-15T01:37:52 08:00)
Maven home:/usr/local/maven
Java version: 1.7.0_25, vendor: Oracle Corporation
Java home:/usr/local/jdk1.7.0_25/jre
Default locale: zh_CN, platform encoding: UTF-8
ProtoBuf安装及避坑指南
在安装ProtoBuf前,确保g++为较新版本,若安装过程中遇到问题,尝试安装其他版本,使用`make uninstall`卸载源码安装的版本。在使用VSCode开发时,可能出现头文件检测不到的问题,这时需要查看编译器是否报错,而非仅依赖插件提示。以下为Linux环境下ProtoBuf的安装步骤。
安装依赖库:`autoconf`、`automake`、`libtool`、`curl`、`make`和`g++`,对于Ubuntu用户,使用`sudo apt-get install`命令安装,对于CentOS用户,使用`sudo yum install`命令安装。访问GitHub下载ProtoBuf的指定版本,如v21.11,选择`protobuf-all-21.11.zip`进行下载。在Windows环境下下载后,通过xshell的`rz`指令将文件传输至Linux系统。解压zip包后,进入目录。
执行以下命令进行安装:`./configure`,根据需要选择安装方式。若在`configure`中选择第一种方式,直接执行`make`和`make install`即可完成安装。若选择第二种方式,修改了安装目录,还需在`/etc/profile`中添加相关配置信息,最后执行`source/etc/profile`使配置生效。安装完成后,通过`protoc--version`检查版本信息,显示版本号表示安装成功。
进行ProtoBuf测试示例:创建两个文件`test.cc`和`contacts.proto`。`test.cc`文件包含使用ProtoBuf的示例代码,而`contacts.proto`文件定义了相应的数据结构和字段。执行相关语句进行测试,验证ProtoBuf的安装和使用是否正常。
网络数据通信—ProtoBuf实现序列化和反序列化
Protobuf实现序列化和反序列化
本文将介绍如何通过Protobuf实现网络数据通信,具体案例中我们构建一个通讯录应用,包含客户端和服务器端的交互。主要需求包括:
客户端可执行的操作:新增联系人、删除联系人、查询通讯录列表、查询联系人详细信息。
服务器端提供增删查能力,并确保数据持久化。
客户端与服务器间交互数据使用Protobuf。
环境搭建
选择cpp-httplib库,该库为C++封装的http库,适用于跨平台(如Linux、Windows)的http客户端和服务端开发。使用cpp-httplib时,只需包含头文件httplib.h,并在编译时加上-lpthread选项。相关库源码可访问github.com/yhirose/cpp-...
CentOS环境注意事项
在CentOS下,若使用自带的g++版本(如4.8.5,发布于2015年),在编译项目时可能遇到问题。解决方法是升级gcc/g++至更高版本。
约定双端交互接口
新增联系人
删除联系人
查询通讯录列表
查询联系人详细信息
约定双端交互req/resp
设计了多个protobuf文件用于定义请求和响应结构,包括base_response.proto、add_contact_request.proto至find_all_contacts_response.proto等。
相关视频推荐
高性能服务器通信协议设计的奥秘:XML、JSON、Protobuf性能对比分析
Protobuf序列化协议工程应用方法和实践分析
qq微信即时通讯技术细节:方案选择
C/C++ Linux服务器架构师学习资料分享群:812855908(包含C/C++、Linux、golang等技术资料)
客户端代码实现
main.cc:主程序
ContactException.h:异常类定义
ContactsServer.h:客户端通讯录服务端定义
ContactsServer.cc:客户端通讯录服务实现
服务端代码实现
定义通讯录结构(contacts.proto)
main.cc:服务端主程序
ContactException.h:异常类定义
ContactsServer.h:通讯录服务定义
ContactsServer.cc:通讯录服务实现
Utils.h:工具类定义
ContactsMapper.h:数据持久化接口定义
ContactsMapper.cc:数据持久化接口实现
注:在实际应用中,应将通讯录数据存储至数据库,此处为简化流程,以本地文件作为数据存储。