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-utilmt front util,mt frontend的util
下载后复制到C盘MQL4文件夹里面的ExpertS文件里面,然后打开MT4,在EA交易就能看到本程序,然后右键点击修改,即可编辑
MT4、MT5数据库访问dll组件是我们开发的方便开发人员简单访问数据库的组件dll。此组件采用的ADO模式支持主流数据库(sqlserver mysql access 等等)访问通讯。 MT4、MT5测试脚本是通过连接sqlserver(所以机器上要...
前端开源库-mt-uzMt Uz,为Mt调用Uz
cout <<"Hello world, wudimei.com!"() ; } } int main() { boost::thread thread1(&hello); boost::thread thread2(&hello); boost::thread thread3(&hello); boost::thread thread4(&hello); thread1....
MT6625L是一种四合一连接芯片,包含2.4GHz Wi-Fi /蓝牙收发器前端,5GHz Wi-Fi收发器前端,gps接收器前端和完整的FM接收器,以及集成的 QFN40封装中的无源器件(IPD)。 错误中显示了简化的框图以及如何使用MT6625L...
MT观摩账户管理软件,支持MT5与MT5观摩账户批量管理。...2、MT4或MT5多开运行。 3、多窗口排列叠加,软件登录加密。 4、进程批量管理,隐藏进程窗口,MT4或MT5窗口置顶等等功能扩展。 有需要此软件的源码可私信。
MT4+CTP程序化,下载文件Program Files.rar, 放在D:Program Files 右键单击,解压到当前文件夹,解出程序文件夹"MT+CTP600"和说明书. 把D:Program FilesMT+CTP600中的3个快捷方式:“MT+CTP600”和“MT+CTP600 ...
MT7621/MT7620/MT7530 交换机的VLAN配置手册
MT论坛每日自动签到PHP接口脚本开源。随手写了一个单个PHP实现MT论坛每日自动签到的脚本,并将其开源无加密。这个脚本适用于MT论坛的每日自动签到,实现方式是使用PHP+formhash和cookie参数。 使用这个脚本非常简单...
MT7621 + MT7603 + MT7613 HDK参考设计
MT4MT5编程PDF文档学习资料
把D:\Program Files\MT+CTP600中的3个快捷方式:“MT+CTP600”和“MT+CTP600 MetaEditor”,以及“ MT+CTP工具软件”拷贝粘贴到windows桌面 注意: 要确保路径正确,否则快捷方式无效 要通过快捷方式启动才能使行情...
MT7621A+MT7915DA+MT7975DN 硬件参考设计HDK,WIFI6
MT7612E,MT7615,MT7621数据手册
Documentation for Mediatek MT2503, MT2502, MT3333, MT3332
MTK资料 MT7628AN, MT7628NN MT7628KN 最新版路由芯片datasheet
MT7623官方数据手册,包含MT7623A与MT7623N,两款芯片的手册一次性都给你了。
关于mt4j的简介、安装、配置方法、结构、hello world样例。
前端开源库-mt-ultramanMt Ultraman,前端自动化工具