octo-rpc 和 octo-ns
参考
https://github.com/Meituan-Dianping/octo-rpc/blob/master/whale/docs/Quick_start.md
和
https://github.com/Meituan-Dianping/octo-ns/tree/master/sdk/mns-sdk
###########.注意的地方:
#############centos7
这个依赖thrift和muduo,
主要检查thrift的配置 和muduo的配置, 如果是/usr/local/之类的我们都可能要改,
我们thrift装在/usr/local/thrift下
muduo自己装可能有问题,尽量用cmake下的
如果是一堆错误,可能是这个
SET( CMAKE_CXX_FLAGS "-std=c++11 -O3")
octo-ns/sdk/mns-sdk/src/mns_worker.h:144:19: 错误:字段‘wp_conn_info’类型不完全
这种错误是boost错误,用 yum的,不要自己装,会把系统装坏了,再yum也不行了
######octo-ns ###############.
### sdk 参考https://github.com/Meituan-Dianping/octo-ns/tree/master/sdk/mns-sdk
#
git clone https://github.com/Meituan-Dianping/octo-ns
yum install epel-release
yum install git gcc-c++ cmake
yum install uuid uuid-devel libuuid-devel -y
#在编译example的时候需要uuid
yum install boost-devel zlib-devel log4cplus-devel rapidjson-devel
yum install cmake curl curl-devel openssl openssl-devel protobuf protobuf-devel -y
muduo用octo来安装 ,boost也yum装
手动安装thrift-0.8.0 前提是要装好boost和protobuf和openssl
./configure --prefix=/usr/local/thrift --without-python --without-csharp --without-erlang --without-go --without-haskell --without-ruby --without-perl --without-php --without-php_extension
make
make install
export LANG=en_US.UTF-8
提示错误方便点
###########
./build.sh init的时候
可能出现
muduo的安装有问题
#####错误:
‘off_t’ does not name a type
vim muduo/base/StringPiece.h
#include <sys/types.h>
可能有很多错误,尝试-std=c++11
SET(CMAKE_CXX_FLAGS "-std=c++11 -O3")
############
./build.sh only_lib
如果thrift找不到
CMakeLists.txt
SET(THRIFT_COMPILER "/usr/local/thrift/bin/thrift")
SET(THRIFT_INCLUDE_DIR "/usr/local/thrift/include")
#SET(THRIFT_LIBRARY "/usr/local/thrift/lib")
SET(THRIFT_LIBRARY "/usr/local/thrift/lib/libthrift.a")
这三个变量检查一下
INCLUDE_DIRECTORIES("/usr/local/thrift/include")
或者INCLUDE_DIRECTORIES("/usr/local/thrift/include/thrift")
LINK_DIRECTORIES("/usr/local/thrift/lib")
#########################octo-rpc 框架
git clone https://github.com/Meituan-Dianping/octo-rpc
#thrift和zookeeper的位置
octo-rpc/whale
cmake/FindThrift.cmake
#set(THRIFT_INCLUDE_DIR_S /usr/include)
#set(THRIFT_INCLUDE_DIR_S /usr/lib64/)
改成
set(THRIFT_INCLUDE_DIR_S /usr/local/thrift/include)
set(THRIFT_LIB_DIR_S /usr/local/thrift/lib)
find_path(THRIFT_INCLUDE_DIR NAMES thrift/ PATHS ${THRIFT_INCLUDE_DIR_S})
#find_library(THRIFT_LIBRARY NAMES libthrift.a PATHS ${THRIFT_INCLUDE_DIR_S})
find_library(THRIFT_LIBRARY NAMES libthrift.a PATHS ${THRIFT_LIB_DIR_S})
CMakeLists.txt
SET(THRIFT_COMPILER "/usr/local/thrift/bin/thrift")
SET(THRIFT_INCLUDE_DIR "/usr/local/thrift/include")
SET(THRIFT_LIBRARY "/usr/local/thrift/lib")
###########
zookeeper: 3.4.6版本,版本不一样api不一样,
yum install automake autoconf cppunit cppunit-devel ant -y
yum install libtool libtool-devel -y
没有会报错:possibly undefined macro: AC_PROG_LIBTOOL
ant compile-native
前面加
SET(ZOOKEEPER_INCLUDE_DIR "/opt/mt/setup/zookeeper/build/c/build/include")
SET(ZOOKEEPER_LIBRARY "/opt/mt/setup/zookeeper/build/c/build/lib")
后面加
INCLUDE_DIRECTORIES("/opt/mt/setup/zookeeper/build/c/build/include")
LINK_DIRECTORIES("/opt/mt/setup/zookeeper/build/c/build/lib")
否则可能报错:
/opt/mt/octo-rpc/whale/cthrift/util/zk_client.cc:273:70: error: ‘zoo_get’ was not declared in this scope
ret = zoo_get(m_zh, path, watch, buff_ptr.get(), buffer_len, stat);
SET(CMAKE_CXX_FLAGS "-std=c++11 -O3")
########错误 htonll ntoll 这个在thrift 0.8.0里面重新定义了,和系统的不一样, 所以注意thrift的include的路径,有的带thrift有的不带thrift,这个容易出错
/data2/octo/mtransport/setup/octo-ns/sg_agent/thrid_party/cthrift/include/cthrift/cthrift_tbinary_protocol.tcc:296:39: error: use
of undeclared identifier 'htons'
int16_t net = static_cast<int16_t>((htons)(i16))
这种问题都是include路径不对
检查SET 变量 和
INCLUDE_DIRECTORIES("")
LINK_DIRECTORIES("")
INCLUDE_DIRECTORIES(system ${CMAKE_SOURCE_DIR}/thrid/include/thrift)
要改
INCLUDE_DIRECTORIES(system ${CMAKE_SOURCE_DIR}/thrid/include)
#INCLUDE_DIRECTORIES(system ${CMAKE_SOURCE_DIR}/thrid/include/thrift)
INCLUDE_DIRECTORIES(/usr/local/thrift/include/thrift)
LINK_DIRECTORIES(${CMAKE_SOURCE_DIR}/thrid/lib/)
LINK_DIRECTORIES(/usr/local/thrift/lib/)
########错误:
/opt/mt/octo-rpc/whale/cthrift/cthrift_client.cc:105:74: error: no matching function for call to ‘make_pair(std::string&, boost::shared_ptr<meituan_cthrift::CthriftClientWorker>&)’
sp_cthrift_client_worker_));
https://www.cnblogs.com/zl1991/p/7699510.html
https://codeday.me/bug/20170727/45258.html
这个在c++11 的时候,类似java的泛型变严格了 ,需要去掉严格限制
把
map_appkey_worker_.insert(
std::make_pair<string, WorkerWeakPtr>(map_key,sp_cthrift_client_worker_));
改成
//modify by hao
map_appkey_worker_.insert(
//std::make_pair<string, WorkerWeakPtr>(map_key,(WorkerWeakPtr)(sp_cthrift_client_worker_)));
std::make_pair(map_key,sp_cthrift_client_worker_));
##################在编译example的时候,可能找不到thrift的库或者 muduo的库
要仔细看,如果加了 -std=c++11的选项
则mudo的库在
/usr/local/lib/libmuduo_base_cpp11.a
/usr/local/lib/libmuduo_net_cpp11.a
-- MUDUO_BASE_LIBRARY /usr/local/lib/libmuduo_base_cpp11.a
-- MUDUO_NET_LIBRARY /usr/local/lib/libmuduo_net_cpp11.a
要修改cmake/FindMuduo.cmake
find_library(MUDUO_LIBRARY NAMES libmuduo_base_cpp11.a PATHS ${MUDUO_LIBRARY_S})
和 CMakeLists.txt中的
#find_library(MUDUO_BASE_LIBRARY libmuduo_base.a)
find_library(MUDUO_BASE_LIBRARY libmuduo_base_cpp11.a)
#find_library(MUDUO_NET_LIBRARY libmuduo_net.a)
find_library(MUDUO_NET_LIBRARY libmuduo_net_cpp11.a)
如果是thrift找不到:
在CMakeLists.txt里面加
INCLUDE_DIRECTORIES(/usr/local/thrift/include/thrift)
LINK_DIRECTORIES(${CMAKE_SOURCE_DIR}/thrid/lib/)
LINK_DIRECTORIES(/usr/local/thrift/lib/)
检查
SET(THRIFT_COMPILER "/usr/local/thrift/bin/thrift")
SET(THRIFT_INCLUDE_DIR "/usr/local/thrift/include")
#SET(THRIFT_LIBRARY "/usr/local/thrift/lib")
SET(THRIFT_LIBRARY "/usr/local/thrift/lib/libthrift.a")
#################
分享到:
相关推荐
虽然`mt-front-util`可能不是专门的状态管理库,但可能包含一些轻量级的状态管理解决方案,帮助开发者组织和同步组件之间的数据。 9. **性能优化**:为了提升页面加载速度和运行效率,`mt-front-util`可能会提供...
下载后复制到C盘MQL4文件夹里面的ExpertS文件里面,然后打开MT4,在EA交易就能看到本程序,然后右键点击修改,即可编辑
MT4、MT5数据库访问dll组件是我们开发的方便开发人员简单访问数据库的组件dll。此组件采用的ADO模式支持主流数据库(sqlserver mysql access 等等)访问通讯。 MT4、MT5测试脚本是通过连接sqlserver(所以机器上要...
在OpenWRT中,MT7620的无线驱动是关键组件,用于控制和管理硬件的无线功能。"mt7620a/n"指的是MT7620的两种变体,它们分别对应不同的无线芯片版本,支持不同频段和速度的无线连接。这些驱动程序是用C语言编写的,...
《浙江大学智能手机软件开发本科课程——Android HelloWorld实验详解》 在智能手机软件开发领域,Android平台以其开源、灵活的特性,成为众多开发者首选的开发环境。浙江大学开设的智能手机软件开发本科课程,旨在...
【前端开源库-mt-uz】是一个专门为"Mt"调用"Uz"设计的前端开源库。在当前数字化时代,前端开发已经成为构建交互式、动态网页应用的关键部分,而开源库则是开发者们共享和利用代码资源的重要平台。 Mt-uz致力于提供一...
标题中的“MT8788 ANDROID11 支持MT7663完整patch”表明这是一个针对MediaTek MT8788处理器的Android 11系统更新,其中包含了对MT7663无线芯片组的完整补丁支持。这个补丁集可能是由开发者或者社区为了解决兼容性...
虽然原文未给出具体的Hello World示例代码,但我们可以假设一个简单的场景创建过程: - 创建一个新的场景。 - 在场景中添加一个基础组件,比如一个矩形或文本组件。 - 设置组件的位置、颜色等属性。 - 在场景中注册...
MT论坛每日自动签到PHP接口脚本开源。随手写了一个单个PHP实现MT论坛每日自动签到的脚本,并将其开源无加密。这个脚本适用于MT论坛的每日自动签到,实现方式是使用PHP+formhash和cookie参数。 使用这个脚本非常简单...
该参考设计涉及的是基于MT6762、MT6357、MT6371、MT6177M和MT6631等芯片的嵌入式系统硬件架构,主要关注的是移动设备的多媒体、连接性、电源管理及存储解决方案。下面将详细解析这些知识点: 1. **MT6762**:这是一...
标题中的"MT25QL256ABA_v2p6p1_mt25qu256开发_MT25Ql256A驱动_mt25ql_MT25QL256ABA"指的是Micron公司的MT25QL256ABA型闪存芯片,这是一个256兆位(32MB)的串行NOR闪存设备。v2p6p1可能代表该芯片的版本号或固件版本...
- **智能电视**:作为智能电视的核心组件之一,MT9700系列芯片能够支持流畅的视频播放、丰富的应用程序运行以及高效的网络连接等功能。 - **显示器**:在高端显示器中,这些芯片能够提供卓越的画质表现和多样化的...
而"OPENWRT固件"则是OpenWrt项目为MT7620A芯片准备的固件镜像,用户可以下载并刷入路由器,以享受开源固件带来的丰富功能和个性化配置。 总的来说,MT7620A可用固件涉及到的主要知识点包括: 1. MediaTek MT7620A...
cout <<"Hello world, wudimei.com!"() ; } } int main() { boost::thread thread1(&hello); boost::thread thread2(&hello); boost::thread thread3(&hello); boost::thread thread4(&hello); thread1....
MT观摩账户管理软件,支持MT5与MT5观摩账户批量管理。...2、MT4或MT5多开运行。 3、多窗口排列叠加,软件登录加密。 4、进程批量管理,隐藏进程窗口,MT4或MT5窗口置顶等等功能扩展。 有需要此软件的源码可私信。
MT7621A+MT7915DA+MT7975DN 硬件参考设计HDK,WIFI6 本文将根据提供的文件信息,生成相关的IT知识点。 1. WIFI6技术:WIFI6是最新的一代Wi-Fi标准,具有高速率、低延迟和高容量等特点。它可以提供更快、更可靠的...
《MT7530B_MT7530W_Approval_Datasheet_V0.91_youthest_mt7530_MT7530W》这份文档是针对MT7530B和MT7530W交换机的重要技术资料,其中包含了详细的规格参数、功能特性以及审批信息。MT7530B和MT7530W是可能由Youthest...
标题中的“MT6816_STM32F030_磁编码器程序编写_MT6816stm32_MT6816_mt6816代”指的是一个使用STM32F030微控制器(MCU)进行磁编码器数据处理的项目。MT6816可能是该项目或芯片的特定型号,而STM32F030是意法半导体...